我创建了一个由 systemd 启动的守护进程,在我的守护进程中我有一个 python 函数来获取时间。问题是时间不对,有8个小时的时差。
这是我的服务脚本:
[Unit]
Description=auto-sync daemon
[Service]
ExecStart=/bin/bash -c "/usr/bin/auto-sync -s"
[Install]
WantedBy=basic.target
我尝试了多种在 python 中获取时间的方法,但它们都是错误的。
from datetime import datetime
datetime.now().strftime("%d-%m-%Y %H:%M:%S")
我告诉自己问题可能是一些奇怪的系统用户正在运行脚本,所以我补充道:User=root
但我仍然遇到同样的问题!任何想法?
我实际上不想添加+8小时,因为我不确定我的程序的所有用户是否都有同样的问题
答案1
您所在的时区与 GMT 相差 8 小时吗?听起来你对 datetime.now() 的 python 调用没有使用当前时区,而是返回 GMT 时区的时间。
在内部,这个时间只是一个长整数,包含自格林尼治标准时间 1970 年 1 月 1 日以来的秒数。你的Python运行在错误的时区是问题所在。您可以使用皮兹库来解决这个问题,请参阅这些答案。