python3之datetime模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3之datetime模块相关的知识,希望对你有一定的参考价值。
生成时间
注意微秒不能是浮点数
1: import datetime
2: t = datetime.time(1, 2, 3, 4)
3: print(t.hour, t.minute, t.second, t.microsecond, t.tzinfo)
4: print(datetime.time.min)5: print(datetime.time.max)
结果
1: 1 2 3 4 None2: 00:00:003: 23:59:59.999999
或者datetime.datetime.now() 返回当前的datetime日期类型
1: import datetime
2: print(datetime.datetime.now())
结果:
1: 2019-01-30 18:18:51.298951
这样就有,d.timestamp(),d.today(), d.year,d.timetuple()等方法可以调用
生成日期
方法1:直接生成当前日期
1: import datetime
2: t = datetime.date.today()3: print(t)
4: print(t.year, t.month, t.day)
结果
1: 2019-01-302: 2019 1 30
方法2:由时间戳或者Gregorian日历来生成
1: import datetime
2: import time3:4: t = 7331145: print(datetime.date.fromordinal(t))
6: t1 = time.time()7: print(datetime.date.fromtimestamp(t1))
8:9: print(datetime.date.min)
10: print(datetime.date.max)
11: # 最低的单位12: print(datetime.date.resolution)
结果:
1: 2008-03-132: 2019-01-303: 0001-01-014: 9999-12-315: 1 day, 0:00:00
方法3:由现有时间创建
1: import datetime
2:3: d1 = datetime.date(2008, 3, 29)4: print(d1.ctime())
5: d2 = d1.replace(year=2019, month=1, day=30)
6: print(d2)
7: print(d2.ctime())
结果:
1: Sat Mar 29 00:00:00 20082: 2019-01-303: Wed Jan 30 00:00:00 2019
时间的计算
1: import datetime
2: today = datetime.date.today()3: print("today:", today)4: one_day = datetime.timedelta(days=1)5: yesterday = today - one_day6: tomorrow = today + one_day7: print("yesterday:", yesterday)8: print("tomorrow:", tomorrow)9: # 也支持浮点数10: one_point_five_day = one_day * 1.5
结果
1: today: 2019-01-302: yesterday: 2019-01-293: tomorrow: 2019-01-31
时间的比较
1: import datetime
2: t1 = datetime.time(12, 55, 0)
3: t2 = datetime.time(13, 55, 0)
4: if t1 < t2:
5: print("lasted time:", t2)6:7: d1 = datetime.date.today()8: d2 = datetime.date.today() + datetime.timedelta(days=1)9: if d1 < d2:
10: print("lasted date:", d2)
结果:
1: lasted time: 13:55:00
2: lasted date: 2019-01-31
格式化和解析
默认格式:YYYY-MM-DDTHH:MM:SS.mmmmm
可以用strftime()生成其他格式,strptime可以将格式化的字符串转化成datetime实例
1: import datetime
2:3: today = datetime.datetime.today()4: format = "%a %b %d %H:%M:%S %Y"
5: s = today.strftime(format)6: print("strftime:", s)7: d = datetime.datetime.strptime(s, format)8: print("strptime:", d)9: print("strptime->strftime:", d.strftime(format))
结果:
1: strftime: Wed Jan 30 18:38:53 20192: strptime: 2019-01-30 18:38:533: strptime->strftime: Wed Jan 30 18:38:53 2019
所有格式化符号如下:
- %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 当前时区的名称
- %% %号本身
时区
建议使用模块pytz。
以上是关于python3之datetime模块的主要内容,如果未能解决你的问题,请参考以下文章