datetime 模块

datetime

datetime是Python处理日期和时间的标准库。

获取当前日期和时间:

>>> from datetime import datetime
>>> now = datetime.now() # 获取当前datetime
>>> print(now)
2015-05-18 16:28:07.198690

datetime是模块,datetime模块还包含一个datetime类

 

要指定某个日期和时间,直接用参数构造一个datetime:

>>> from datetime import datetime
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建datetime
>>> print(dt)
2015-04-19 12:20:00


timestamp 时间戳

timestamp转换为datetime

要把timestamp转换为datetime,使用datetime提供的fromtimestamp()方法:

>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t))
2015-04-19 12:20:00

 


str转换为datetime

通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:

>>> from datetime import datetime
>>> cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
>>> print(cday)
2015-06-01 18:19:59

 

datetime转换为str

转换方法是通过strftime()实现的,同样需要一个日期和时间的格式化字符串:

>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Mon, May 05 16:28


datetime加减

加减可以直接用+和-运算符,不过需要导入timedelta这个类:

>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)
>>> now + timedelta(hours=10)
datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)
>>> now - timedelta(days=1)
datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)
>>> now + timedelta(days=2, hours=12)
datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)


datetime表示的时间需要时区信息才能确定一个特定的时间,否则只能视为本地时间

 

获取了用户输入的日期和时间如2015-1-21 9:01:30,以及一个时区信息如UTC+5:00,均是str,请编写一个函数将其转换为timestamp:


import re
from datetime import datetime, timezone, timedelta

def to_timestamp(dt_str,tz_str):
#str转换为datetime
dt=datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S')
#从正则表达式中提取出时区差值
tz_hours=int(re.match(r'UTC[+-]{1}(d+):d{2}',tz_str).group(1))
## 创建时区UTC+tz_hours
tz_utc=timezone(timedelta(hours=tz_hours))
# 强制设置为UTC+tz_utc
dt=dt.replace(tzinfo=tz_utc)
return dt.timestamp() #返回timestamp

朝闻道
原文地址:https://www.cnblogs.com/wander-clouds/p/8486991.html