美文网首页
python时区、时间问题

python时区、时间问题

作者: 0_oHuanyu | 来源:发表于2018-05-16 14:29 被阅读25次

    这次遇到一个问题:
    在crontab中设定python脚本的在5点执行,然后代码会在5点正确执行,但是获取时间时,总是取到8个小时之前的时间。

    然后我做了以下尝试:

    1. 直接执行python脚本,或者使用交互式命令行的时候,python的时区是正确的。但是在crontab中执行的时候,总是取到utc时间,而不是东八区。
    2. 在crontab中直接用shell命令 date -R 打印日期,发现是正确的时间
    3. 在python交互式命令行中,os.environ['TZ']可以看到是Asia/Shanghai,而在crontab中,会报错:找不到这个环境变量

    综上可知,crontab的时间和时区没有问题,而crontab执行python脚本时,时区有问题。也就是说crontab的环境变量和系统的环境变量不一致。这样会导致在parse “2018-05-16”这样的字符串转成时间戳的时候,和东八区的时间戳差8个小时(因为parse时使用的时区的是utc)。

    解决方案:
    python(3.5,linux系统)在判断本地时区的时候,会读一个叫TZ的环境变量。如果你确定自己的crontab时间和系统时间一致,那么在crontab执行python脚本,改为先执行shell脚本,shell脚本的第一个命令是设置一下这个环境变量:

    export TZ=Asia/Shanghai

    第一个命令是执行你的python脚本

    /usr/bin/python3 /home/webadmin/liuhuanyu/test/Test.py

    这样python的时区就没问题了。

    相关文章

      网友评论

          本文标题:python时区、时间问题

          本文链接:https://www.haomeiwen.com/subject/whppdftx.html