获取当前时间
1. 用time模块获取当前时间
>>> import time
>>> t = time.localtime()
>>> current_time = time.strftime("%Y-%m-%d %H:%M:%S", t)
>>> print(current_time)
'2020-06-13 17:59:12'
或者直接就用下面代码也能获取当前时间的字符串
>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S")
'2020-06-13 15:45:57'
2. 用datetime模块获取当前时间:
>>> from datetime import datetime
>>> dt = datetime.now()
>>> dt.strftime('%Y-%m-%d %H:%M:%S')
'2020-06-13 18:03:09'
格式化时间字符串
1. 用time模块格式化时间字符串:
>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S")
'2020-06-13 15:45:57'
说明:time模块提供一些日期时间的函数,注意python里面还有一个time对象,这两者是有区别的。
2. 用datetime模块格式化时间字符串:
>>> from datetime import datetime
>>> datetime.now().strftime('%Y-%m-%d %H:%M:%S')
'2020-06-13 17:57:25'
解析时间字符串
1. 用time模块:
>>> import time
>>> time.strptime("30 Nov 00", "%d %b %y")
time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
2. 用datetime模块:
>>> from datetime import datetime
>>> datetime.strptime('2020-06-13 18:03:09', '%Y-%m-%d %H:%M:%S')
datetime.datetime(2020, 6, 13, 18, 3, 9)
时间日期加减
>>> from datetime import datetime, timedelta
>>> nine_hours_from_now = datetime.now() + timedelta(hours=9)
>>> nine_hours_from_now
datetime.datetime(2020, 6, 14, 3, 14, 58, 720758)
说明:datetime模块的timedelta对象可以用于操纵datetime时间
计算时间的长短
同样,timedelta对象可以用来计算时间的长短
>>> time1 = datetime(1985, 9, 10, 0, 10)
>>> time2 = datetime(1986, 9, 10, 0, 10)
>>> time1 - time2
datetime.timedelta(-365)
时间对象转Epoch时间
1.time模块转epoch时间
>>> import time
>>> now = int(time.time())
>>> now
1592043522
说明:time.time()方法返回当前epoch时间的float数据,int()方法将float转成int
2.datetime模块转epoch时间:
>>> from datetime import datetime
>>> datetime(2012,4,1,0,0).timestamp()
1333209600.0
>>> int(datetime(2012,4,1,0,0).timestamp())
1333209600
注: Epoch时间(也称为Unix时间,POSIX时间)是用自世界标准时间(UTC)1970-1-1 00:00:00后的秒数值
关于时区timezone,UTC等
日期和时间对象可以分为“感知型”和“简单型”两类。简单来说:
“感知型”就是在对象里面包含了时区信息,对于一个给定的时间,无论在哪个时区转换成UTC都是同一个时间
“简单型”就是在对象里面不包括时区信息,对于一个时间处于哪个时区,完全是靠开发者自己来确定。
对于一个datetime对象,检查它是“感知型”还是“简单型”最简单的办法是检查它是否有tzinfo对象
>>> from datetime import datetime
>>> print(datetime.now().tzinfo)
None
要使一个datetime对象变成“感知型”可以引入pytz库。首先,您必须实例化一个timezone对象,然后使用该timezone对象将datetime对象 localize(本地化)。 localize(本地化)只是给出对象的时区信息。
>>> import datetime
>>> import pytz
>>> now = datetime.datetime.now()
>>> timezone = pytz.timezone('Asia/Shanghai')
>>> now_aware = timezone.localize(now)
>>> now_aware.tzinfo
>>> now_aware
datetime.datetime(2020, 6, 13, 19, 25, 53, 105241, tzinfo=
要获取pytz支持的所有时区
>>> pytz.all_timezones
['Africa/Abidjan', ......, 'WET', 'Zulu']
要转换成其它时区
>>> timezone2 = pytz.timezone('US/Pacific')
>>> now_aware = timezone2.localize(now)
>>> now_aware
datetime.datetime(2020, 6, 13, 19, 25, 53, 105241, tzinfo=