Effective Python 读书笔记: 第45条: 应该用datetime模块处理本地时间,而不是用time模块

# -*- encoding: utf-8 -*-

from datetime import datetime
import pytz
from time import localtime, strftime

'''
第45条: 应该用datetime模块处理本地时间,而不是用time模块

关键:
1 UTC
含义:协调世界时间,是标准时间表示方式,与时区无关
时区转换: 用datetime模块

2 time
localtime函数:把unix时间戳转换为与宿主机计算机时区符合的时间

3 总结
1)要使用datetime而不是time进行时区转换,datetime加上pytz可以进行时区转换
2)数据库中存储utc时间,如果存储的是本地时间,否则一旦应用进行国际化部署运行后,会有时区错误的
问题。
3) 应用国际化处理时间的正确流程如下:
存储在数据库的是utc时间<---api查询传入的也是utc时间<--前端页面展示的是获取的utc时间+根据当前时区转换后的本地时间



参考:
Effectiv Python 编写高质量Python代码的59个有效方法
'''


def useTime():
    now = 1407694710
    locaTuple = localtime(now)
    timeFormat = "%Y-%m-%d %H:%M:%S"
    timeStr = strftime(timeFormat, locaTuple)
    print timeStr


def useDatetime():
    now = datetime(2019, 3, 31, 9, 30, 0)
    nowUtc = now.replace(tzinfo=pytz.utc)
    nowLocal = nowUtc.astimezone(pytz.utc)
    print nowLocal


def process():
    useTime()
    useDatetime()


if __name__ == "__main__":
    process() 

猜你喜欢

转载自blog.csdn.net/qingyuanluofeng/article/details/89006298
今日推荐