Python3中日期时间的各种用法

获取当前时间

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=)

你可能感兴趣的:(Python3中日期时间的各种用法)