datetime

Befunny 于 2018-06-10 发布

datetime模块中包含3个主要类

当前时间

from datetime import datetime
now = datetime.now()

now的类型是Class datetime.datetime

指定日期时间

from datetime import datetime
dt = datetime(2016, 10, 19, 14, 13, 00)

datetime构建

class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

tzinfo指定datetime的时区信息,默认为None,因此这种方式构造的datetime对象为本地时区。

timestamp

timestamp与时区无关,计算机内部存储时间一般存储timestamp,UTC时间确定后可以转换到任意时区。

datetime对象转换成timestamp

from datetime import datetime
dt = datetime(2016, 10, 19, 14, 13, 00)
ts = dt.timestamp()

Python的timestamp是一个浮点数,小数点后表示毫秒数。


timestamp转换成本地时区的datetime对象

from datetime import datetime
ts = 142917200.0
dt = datetime.fromtimestamp(ts)

timestamp转换成UTC标准时区的datetime对象

from datetime import datetime
ts = 142917200.0
dt = datetime.utcfromtimestamp(ts)

str格式的时间

string格式的时间转换成datetime

from datetime import datetime
cday = datetime.strptime('2016-10-19 15:30:00', '%Y-%m-%d %H:%M:%S')

datetime转换成string

from datetime import datetime
now = datetime.now()
str_time = now.strftime('%Y-%m-%d %H:%M:%S')

常用格式化字符的含义

Directive Meaning
%Y Year with century as a decimal number
%y Year without century as a decimal number [00,99]
%m Month as a decimal number [01,12]
%d Day of the month as a decimal number [01,31]
%H Hour (24-hour clock) as a decimal number [00,23]
%M Minute as a decimal number [00,59]
%S Second as a decimal number [00,61]
%a Locale’s abbreviated weekday name
%A Locale’s full weekday name
%b Locale’s abbreviated month name
%B Locale’s full month name

datetime加减

from datetime import datetime, timedelta
now = datetime.now()
dt_new = now + timedelta(hours=1)

本地时间转换为UTC时间

得到一个datetime对象后设置时区属性

from datetime import datetime, timedelta, timezone
now = datetime.now()
tz_utc_8 = timezone(timedelta(hours=8))
now.replace(tzinfo=tz_utc_8)

时区转换

对于一个datetime,强制设置正确时区做为基准时间,通过astimezone()转换时区。