zoukankan      html  css  js  c++  java
  • python datetime模块

     1 # 1.在平常的工作中,我们常常需要与时间打交道,在python 中,与时间处理相关的模块有time,datetime,calendar。
     2 # 2.datetime模块是重新封装了time 模块,提供了更多接口,提供的类有datetime、timedelta、date、time、tzinfo。UTC(世界协调时):即格林威治天文时间,世界标准时间。在中国为UTC+8。
     3 # 3.时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量;也就是说当前时间相对1970年1月1日 00:00:00经过的秒数。 UTC+00:00时区的时刻称为epoch time即新纪元时间 。你可认为timestamp = 0 = 1970-1-1 00:00:00 UTC+0:00
     4 
     5 # timestamp的值与时区毫无关系,因为timestamp一旦确定,其UTC时间就确定了,转换到任意时区的时间也是完全确定的,这就是为什么计算机存储的当前时间是以timestamp表示的,因为全球各地的计算机在任意时刻的timestamp都是完全相同的(假定时间已校准)。
     6 
     7 from datetime import datetime #导入datetime模块
     8 #4.datetime.now()返回当前日期和时间,其类型是datetime
     9 # now = datetime.now() # 获取当前datetime
    10 # print(now) #2015-05-18 16:28:07.198690
    11 # 其中小数点后的198表示毫秒,690表示微秒
    12 # print(type(now))  # <class 'datetime.datetime'>
    13 
    14 # 5.要指定某个日期和时间,我们直接用参数构造一个datetime类型:
    15 # from datetime import datetime
    16 # dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建
    17 # print(dt) #2015-04-19 12:20:00
    18 
    19 
    20 # 5.把一个datetime类型转换为timestamp只需要简单调用timestamp()方法:
    21 # from datetime import datetime
    22 # dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建datetime
    23 # s=dt.timestamp() # 把datetime转换为timestamp 1429417200.0
    24 # print(type(dt.timestamp()))  #<class 'float'>
    25 # 注意Python的timestamp是一个浮点数。如果有小数位,小数位表示毫秒数。某些编程语言(如Java和JavaScript)的timestamp使用整数表示毫秒数,这种情况下只需要把timestamp除以1000就得到Python的浮点表示方法。
    26 
    27 # 6.要把timestamp转换为datetime,使用datetime提供的fromtimestamp()方法:
    28 # from datetime import datetime
    29 # t = 1429417200.0
    30 # print(datetime.fromtimestamp(t)) #2015-04-19 12:20:00
    31 # 注意到timestamp是一个浮点数,它没有时区的概念,而datetime是有时区的。上述转换是在timestamp和本地时间做转换。本地时间是指当前操作系统设定的时区。例如北京时区是东8区,则本地时间:
    32 # 2015-04-19 12:20:00
    33 # 实际上就是UTC+8:00时区的时间:
    34 # 2015-04-19 12:20:00 UTC+8:00
    35 # 而此刻的格林威治标准时间与北京时间差了8小时,也就是UTC+0:00时区的时间应该是:
    36 # 2015-04-19 04:20:00 UTC+0:00   (相对于本地时间减了8小时)
    37 
    38 # 7.timestamp也可以直接被转换到UTC标准时区的时间:
    39 # from datetime import datetime
    40 # t = 1429417200.0
    41 # print(datetime.fromtimestamp(t)) # 本地时间 2015-04-19 12:20:00
    42 # print(datetime.utcfromtimestamp(t)) # UTC时间 2015-04-19 04:20:00
    43 
    44 #8.很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:
    45 # from datetime import datetime
    46 # cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
    47 # print(cday) # 2015-06-01 18:19:59
    48 # 字符串'%Y-%m-%d %H:%M:%S'规定了日期和时间部分的格式。详细的说明请参考Python文档。注意转换后的datetime是没有时区信息的。
    49 
    50 
    51 # 9.如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()实现的,同样需要一个日期和时间的格式化字符串:
    52 # from datetime import datetime
    53 # now = datetime.now()
    54 # print(now.strftime('%a, %b %d %H:%M'))  # Mon, May 05 16:28
    55 # 格式:含义
    56 # %a :本地简化星期名称,   %A:本地完整星期名称
    57 # %b:本地简化月份名称,      %B:本地完整月份名称
    58 # %H:24小时制,表示小时,  %I :12小时制来表示小时
    59 # %m:表示月份,                    %M:分钟数
    60 # %S:秒数                             %d:一个月中的第几天
    61 
    62 # 10.对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用+和-运算符,不过需要导入timedelta这个类:
    63 # from datetime import datetime, timedelta
    64 # now = datetime.now()
    65 # print(now)
    66 # print(now+timedelta(days=2))
    67 # print(now+timedelta(days=-2,hours=2))
    68 # print(now-timedelta(days=1))
    69 #
    70 # 2019-02-20 18:31:13.255185
    71 # 2019-02-22 18:31:13.255185
    72 # 2019-02-18 20:31:13.255185
    73 # 2019-02-19 18:31:13.255185
    74 
    75 # 11.本地时间是指系统设定时区的时间,例如北京时间是UTC+8:00时区的时间,而UTC时间指UTC+0:00时区的时间。一个datetime类型有一个时区属性tzinfo,但是默认为None,所以无法区分这个datetime到底是哪个时区,除非强行给datetime设置一个时区:
    76 # from datetime import datetime, timedelta, timezone
    77 # tz_utc_8 = timezone(timedelta(hours=8)) # 创建时区UTC+8:00
    78 # now = datetime.now() #2019-02-20 18:33:55.065720
    79 # # datetime(2017, 8, 24, 11, 2, 37, 380073)
    80 # dt = now.replace(tzinfo=tz_utc_8) # 强制设置为UTC+8:00
    81 # print(dt)
    82 # datetime.datetime(2017, 8, 24, 11, 2, 37, 380073, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))
    83 # 如果系统时区恰好是UTC+8:00,那么上述代码就是正确的,否则,不能强制设置为UTC+8:00时区。
    84 
    85 # 12.获取事件戳
    86 # import time
    87 # p=time.time() #获取当前事件戳
    88 # from datetime import datetime
    89 # now=datetime.fromtimestamp(p)
    90 # print(p)
    91 # print(now)
    92 # 1550659249.0410833
    93 # 2019-02-20 18:40:49.041083
  • 相关阅读:
    Code::blocks 使用c++ long double类型出错
    数论四大定理
    线性基
    win7 下强制删除文件
    C++数组指针的引用
    学习方法
    MySQL的ON DUPLICATE KEY UPDATE用法
    MVCC
    RabbitMQ中的Connection 和 Channel
    myisam和innodb的比较
  • 原文地址:https://www.cnblogs.com/zpdbkshangshanluoshuo/p/10408412.html
Copyright © 2011-2022 走看看