方法预览:
- datetime.now() # 当前时间,datetime类型
- datetime.timestamp() # 时间戳,浮点类型
- datetime.strftime('%Y-%m-%d %H:%M:%S') # 格式化日期对象datetime,字符串类型
- datetime.strptime('2017-2-6 23:22:13', '%Y-%m-%d %H:%M:%S') # 字符串转日期对象
- datetime.fromtimestamp(ts) # 获取本地时间,datetime类型
- datetime.utcfromtimestamp(ts) # 获取UTC时间,datetime类型
- # coding: utf-8
- from datetime import datetime
- now = datetime.now()
- print(now)
- print(now.strftime('%Y-%m-%d %H:%M:%S'))
- print(type(now))
输出:
- 2017-02-06 23:18:29.624698
- 2017-02-06 23:18:29
- <class 'datetime.datetime'>
用于格式化日期对象 datetime。另外一个方法
- strftime()
则负责把一个字符串 str 转为
- strptime()
对象:
- datetime
- from datetime import datetime
- odate = datetime.strptime('2017-2-6 23:22:13', '%Y-%m-%d %H:%M:%S')
- print(odate)
- print(type(odate))
输出:
- 2017-02-06 23:22:13
- <class 'datetime.datetime'>
- # coding: utf-8
- from datetime import datetime
- import time
- now = datetime.now()
- print(now)
- # datetime模块提供
- print(now.timestamp())
- # time模块提供
- print(time.time())
输出:
- 2017-02-06 23:26:54.631582
- 1486394814.631582
- 1486394814.631582
小数位表示毫秒数。
自定义时间转换为时间戳:
- from datetime import datetime
- # 方式1:
- odate = datetime.strptime('2017-2-6 23:29:20', '%Y-%m-%d %H:%M:%S')
- print(odate.timestamp())
- # 方式2:
- odate = datetime(2017, 2, 6, 23, 29, 20)
- print(odate.timestamp())
输出:
- 1486394960.0
- 1486394960.0
注意:timestamp 的值是与时区无关的。datetime 是有时区的。
下面演示如何把 timestamp 转换为 datetime。
时间戳转日期:
- # coding: utf-8
- from datetime import datetime
- now = datetime.now()
- ts = now.timestamp()
- print(datetime.fromtimestamp(ts)) # 本地时间
- print(datetime.utcfromtimestamp(ts)) # UTC时间
输出:
- 2017-02-06 23:38:05.213937
- 2017-02-06 15:38:05.213937
可以直接导入 timedelta 类实现日期加减:
- # coding: utf-8
- from datetime import datetime, timedelta
- import time
- now = datetime.now()
- # now += timedelta(hours=10)
- # now += timedelta(minutes=10)
- # now += timedelta(weeks=1)
- now += timedelta(days=-1, hours=1, minutes=1, seconds=10)
- print(now)
输出:
- 2017-02-06 00:47:12.395231
- %y 两位数的年份表示(00-99)
- %Y 四位数的年份表示(000-9999)
- %m 月份(01-12)
- %d 月内中的一天(0-31)
- %H 24小时制小时数(0-23)
- %I 12小时制小时数(01-12)
- %M 分钟数(00=59)
- %S 秒(00-59)
- %a 本地简化星期名称
- %A 本地完整星期名称
- %b 本地简化的月份名称
- %B 本地完整的月份名称
- %c 本地相应的日期表示和时间表示
- %j 年内的一天(001-366)
- %p 本地A.M.或P.M.的等价符
- %U 一年中的星期数(00-53)星期天为星期的开始
- %w 星期(0-6),星期天为星期的开始
- %W 一年中的星期数(00-53)星期一为星期的开始
- %x 本地相应的日期表示
- %X 本地相应的时间表示
- %Z 当前时区的名称
- %% %号本身
来源: