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日のGMT以降の秒数を含む長い整数です。間違ったタイムゾーンで実行されるPythonが問題です。あなたはそれを使用することができますピッツこの問題を解決するには、ライブラリを参照してください。この回答

関連情報