(内部模块)时间日期模块-datetime

654 查看

from datetime import datetime

# case1, 获取现在的时间
# datetime.now()返回类型是datetime
now = datetime.now()
print(now)

# case2, 获取指定日期和时间
dt = datetime(2016, 5, 28, 1, 5, 50)
print(dt)

# case3, 将时间转换为时间戳
# 以1970.1.1日0:0:0开始计数.
# 小数位表示毫秒数, python的timestamp是以
# timestamp的整数位表示秒.
print('timestamp = ', dt.timestamp())

# case4 utc时间与本地时间(东八区)的相互转换
# utc时间指utc+0:00时区的时间.
t = 1464527200.0
print(datetime.fromtimestamp(t))
print(datetime.utcfromtimestamp(t))

# 设置时区, 需要导入timezone这个类
# datetime类型有一个时区属性tzinfo, 默认为None.所以无法区分这个datetime是哪个时区的, 除非强制设置tzinfo属性
from datetime import timezone, timedelta
tz_utc_8 = timezone(timedelta(hours=8))
now = datetime.now();
dt = now.replace(tzinfo=tz_utc_8)
print('utf+8, dt = ', dt)

# 时区转换.
# 通过utcnow()拿到当前的UTC时间, 再转换为任意时区的时间
utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc)
print('utc_dt = ', utc_dt, timezone.utc)

# astimezone()转换时区为北京时间:
# timezone(timedelta(houts=n))即可以获得东几区的timezone对象.
bj_dt = utc_dt.astimezone(timezone(timedelta(hours=8)))
print('bj_dt = ', bj_dt)

# 如果要存储一个datetime, 最好的做法就是将其转换成一个timestamp再存储
# 因为一个timestamp的值与时区无关.


# str转为datatime
cday = datetime.strptime('2016-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
print(cday)

# datetime的加减
now = datetime.now()
temp_now = now + timedelta(hours=10, weeks=10)
print(temp_now)