【发布时间】:2020-01-13 19:36:53
【问题描述】:
我正在尝试通过运行 shell 脚本在 python 3 上设置系统日期/时间,我将“yyyy-mm-dd hh:mm:ss”形式的日期/时间字符串传递给该脚本。脚本将此字符串传递给 timedatectl 以设置时间。
python 调用如下所示:
os.system('sudo %s/settime.sh "%s"' % (Constants.ScriptDirectory, dt))
这里的 dt 是“2019-09-12 07:00:00”
shell脚本很简单:
#!/bin/bash
timedatectl set-ntp no
timedatectl set-time "$1"
当我记录从 python 调用的实际命令时,我看到了我的期望:
sudo /home/user/dev/web/sh/settime.sh "2019-09-12 07:00:00"
问题是这样的:系统时间已更改,但将其设置为 UTC 时间(即 2019-09-12 07:00:00 UTC),并且运行日期报告的时间超出时区增量.但是,如果我从命令行运行与上述完全相同的命令,则时间将正确设置为本地时区,而不是 UTC。
即使我在 python 中包含一个调用以使用 timedatectl 在调用设置时间之前显式设置时区,也会出现这种差异。
我很困惑。为什么效果会不一样?
作为参考,我正在使用 Django 2.2.3 并运行开发服务器。服务器在运行python时是否可能会弄乱时区?
【问题讨论】:
标签: python linux time timezone