python中处理时间和日期的标准库是datetime
1. 获取当前时间
- 首先导入模块:
from datetime import datetime
- 获取当前时间:
now=datetime.now()
- 打印:
print(now)
2. 获取指定日期和时间
直接用参数构造一个时间:
from datetime import datetime
dt=datetime(2017,12,08,10,01)
print(dt)
3. 时间转换为时间戳
timestamp是相当于epoch time的秒数。
epoch time是1970年1月1日 00:00:00 UTC+00:00时区的时刻,记为0(1970年以前的时间timestamp为负数),timestamp的值与时区毫无关系,因为timestamp一旦确定,其UTC(世界统一时间)就确定了。
将时间转换为timestamp:
>>> from datetime import datetime
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建datetime
>>> dt.timestamp() # 把datetime转换为timestamp
1429417200.0
4.timestamp转换为datatime(datetime.fromtimestamp())
>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t))
2015-04-19 12:20:00
如果将timestamp转换为UTC时间:(本地时间=UTC+时区差)
>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t)) # 本地时间
2015-04-19 12:20:00
>>> print(datetime.utcfromtimestamp(t)) # UTC时间
2015-04-19 04:20:00
4. str转换为时区时间
用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串
>>> str_time='2017:12:13 19:17'
>>> print(datetime.strptime(str_time,"%Y:%m:%d %H:%M"))
2017-12-13 19:17:00
5. 时区时间转换为str–strftime()
已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()实现的,同样需要一个日期和时间的格式化字符串:
>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Mon, May 05 16:28
6. 计算时间
now +/- timedelta(year=*,hour=*,...)
参数选填
需要导入timedelta
这个类
>>> from datetime import timedelta
>>> now=datetime.now()
>>> now
datetime.datetime(2017, 12, 13, 19, 26, 24, 561237)
>>> now+timedelta(hours=10)
datetime.datetime(2017, 12, 14, 5, 26, 24, 561237)
- 本地时间转换为带有时区的时间
datetime表示的时间需要时区信息才能确定一个特定的时间,否则只能视为本地时间。
如果要存储datetime,最佳方法是将其转换为timestamp再存储,因为timestamp的值与时区完全无关。