Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果在运行解释器后时区发生更改,则datetime.now返回错误的时间 背景 我有一个应用程序,它用C++代码通过 Boo::Python < /C>绑定,并且遇到了一个问题,它可以用Python解释器来复制。 问题_Python_Python 3.x_Python Datetime - Fatal编程技术网

如果在运行解释器后时区发生更改,则datetime.now返回错误的时间 背景 我有一个应用程序,它用C++代码通过 Boo::Python < /C>绑定,并且遇到了一个问题,它可以用Python解释器来复制。 问题

如果在运行解释器后时区发生更改,则datetime.now返回错误的时间 背景 我有一个应用程序,它用C++代码通过 Boo::Python < /C>绑定,并且遇到了一个问题,它可以用Python解释器来复制。 问题,python,python-3.x,python-datetime,Python,Python 3.x,Python Datetime,我发现datetime.now()返回的时间和time.tzname中的时区取决于解释器运行的时间 复制步骤: 运行解释器(在我的例子中是3.6.5) python 更改时区 timedatectl 导入日期时间,时间 datetime.datetime.now()和time.tzname返回时区更改前有效的值 调查 如果在时区更改后运行解释器,则值是正确的。如果我关闭解释器(在我原来的问题中不可行,应用程序必须全天候运行)并运行一个新的解释器,一切都正常 导入库时,importlib.relo

我发现
datetime.now()返回的时间和
time.tzname中的时区取决于解释器运行的时间

复制步骤:

  • 运行解释器(在我的例子中是3.6.5)
    python
  • 更改时区
    timedatectl

  • 导入日期时间,时间

  • datetime.datetime.now()
    time.tzname
    返回时区更改前有效的值
  • 调查 如果在时区更改后运行解释器,则值是正确的。如果我关闭解释器(在我原来的问题中不可行,应用程序必须全天候运行)并运行一个新的解释器,一切都正常


    导入库时,
    importlib.reload()
    没有帮助
    python2(2.7.15)没有这个问题,但我需要python3。

    加载
    time
    模块时,
    time.tzname
    信息设置一次。
    时间
    模块中有一个明确的方法来重新设置它:

    重置库例程使用的时间转换规则。环境变量
    TZ
    指定如何执行此操作。它还将设置变量
    tzname
    (来自
    TZ
    环境变量)、
    时区
    (UTC以西非DST秒)、
    altzone
    (UTC以西DST秒)和
    daylight
    (如果此时区没有任何夏令时规则,则设置为
    0;如果夏令时适用于某个时间、过去、现在或将来,则设置为非零)


    datetime.datetime.now()
    不会生成带时区的datetime对象;通常会显式传入时区。

    加载
    time
    模块时,
    time
    信息只设置一次。
    time
    模块中有一个显式方法可以重新设置它:

    重置库例程使用的时间转换规则。环境变量
    TZ
    指定如何执行此操作。它还将设置变量
    tzname
    (来自
    TZ
    环境变量)、
    timezone
    (UTC以西非DST秒)、
    altzone
    (UTC以西DST秒)和
    daylight
    (如果此时区没有任何夏令时规则,则设置为
    0;如果夏令时适用于过去、现在或将来的某个时间,则设置为非零)

    datetime.datetime.now()
    不会生成带有时区的datetime对象;通常会显式传入时区