gpt4 book ai didi

python - 为什么在使用命令行设置本地时间时使用 timedatectl 设置 UTC 时间从 python 设置时间?

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:29 27 4
gpt4 key购买 nike

我正在尝试通过运行一个 shell 脚本从 python 3 在 ubuntu 服务器上设置系统日期/时间,我将格式为“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 时弄乱了时区?

最佳答案

我通过间接途径偶然发现了答案。

Django settings.py 文件有

TIME_ZONE = 'UTC'

将值更改为本地时区,或让它动态加载解决了问题。

关于python - 为什么在使用命令行设置本地时间时使用 timedatectl 设置 UTC 时间从 python 设置时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57898001/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com