systemd 守护进程和 python 得到错误的时间

systemd 守护进程和 python 得到错误的时间

我创建了一个由 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运行在错误的时区是问题所在。您可以使用皮兹库来解决这个问题,请参阅这些答案

相关内容