相关疑难解决方法(0)

Python:找出当地时区

我想将日志文件中的UTC时间戳与本地时间戳进行比较.在创建本地datetime对象时,我使用如下内容:

>>> local_time=datetime.datetime(2010, 4, 27, 12, 0, 0, 0, 
                                 tzinfo=pytz.timezone('Israel'))
Run Code Online (Sandbox Code Playgroud)

我想找到一个自动工具来取代tzinfo=pytz.timezone('Israel')当前的本地时区.

有任何想法吗?

python time timezone datetime utc

55
推荐指数
9
解决办法
8万
查看次数

获取datetime.datetime.fromtimestamp()使用的时区

是否有可能,如果是,如何获得datetime.timezone用于datetime.datetime.fromtimestamp()POSIX时间戳(自纪元以来的秒数)转换为datetime对象的时区(即UTC偏移或具有该偏移的实例)?

datetime.datetime.fromtimestamp()将POSIX时间戳转换为天真datetime对象(即没有a tzinfo),但使用系统的语言环境将其调整为当地时区和当时生效的UTC偏移量.

例如,使用日期2008-12-27午夜UTC(自纪元以来40*356*86400秒):

>>> datetime.datetime.fromtimestamp(40 * 356 * 86400)
datetime.datetime(2008, 12, 27, 1, 0)
Run Code Online (Sandbox Code Playgroud)

该时间戳datetime在早上1点被转换为对象(当时是在CET/CEST时区).100天后,这是结果:

>>> datetime.datetime.fromtimestamp((40 * 356 + 100) * 86400)
datetime.datetime(2009, 4, 6, 2, 0)
Run Code Online (Sandbox Code Playgroud)

现在是凌晨2点.这是因为到那时,DST是活跃的.

我希望它datetime.datetime.fromtimestamp()tzinfo在返回的datetime实例中设置它的用途,但事实并非如此.

python timezone

26
推荐指数
3
解决办法
5万
查看次数

获取 Windows 上的本地时区名称 (Python 3.9 zoneinfo)

查看zoneinfoPython 3.9 中的模块,我想知道它是否还提供了一个方便的选项来检索 Windows 上的本地时区(操作系统设置)。

\n

在 GNU/Linux 上,你可以这样做

\n
from datetime import datetime\nfrom zoneinfo import ZoneInfo\n\nnaive = datetime(2020, 6, 11, 12)\naware = naive.replace(tzinfo=ZoneInfo(\'localtime\'))\n
Run Code Online (Sandbox Code Playgroud)\n

但在 Windows 上,这会抛出

\n
\n

ZoneInfoNotFoundError: \'未找到包含关键本地时间的时区\'

\n
\n

那么我还需要使用第三方库吗?例如

\n
import time\nimport dateutil\n\ntzloc = dateutil.tz.gettz(time.tzname[time.daylight])\naware = naive.replace(tzinfo=tzloc)\n
Run Code Online (Sandbox Code Playgroud)\n

由于time.tzname[time.daylight]返回本地化名称(在我的例子中为德语,例如 \'Mitteleurop\xc3\xa4ische Sommerzeit\'),因此这也不起作用:

\n
aware = naive.replace(tzinfo=ZoneInfo(tzloc))\n
Run Code Online (Sandbox Code Playgroud)\n

有什么想法吗?

\n
\n

ps 要在 Python < 3.9 上尝试此操作,请使用backports(另请参阅此答案):

\n
pip install backports.zoneinfo\npip install tzdata # needed on Windows\n
Run Code Online (Sandbox Code Playgroud)\n

python timezone datetime zoneinfo python-3.9

11
推荐指数
2
解决办法
1万
查看次数

Python:给定时区名称的所有可能的时区缩写(反之亦然)

使用pytz,我知道如何列出时区名称,但我想获得每个时区名称的所有可能的时区缩写

import pytz
list(pytz.common_timezones)
['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa',...]
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是任何时区缩写,例如PSTPDT,忽略当前日期时间(例如现在),返回所有可能的时区名称,在这种情况下是一个包​​含America/Los_Angeles的列表。

谢谢

python timezone datetime pytz

5
推荐指数
3
解决办法
9889
查看次数

修改主机操作系统默认设置后,Java将检测时区

我有一个运行的简单Java Executor线程。这只是检测时区并显示。

代码如下:

ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
    exec.scheduleAtFixedRate(new Runnable() {
      @Override
      public void run() {

            TimeZone.setDefault(null);
            //get Calendar instance
            Calendar now = Calendar.getInstance();

            //get current TimeZone using getTimeZone method of Calendar class
            TimeZone timeZone = now.getTimeZone();

            //display current TimeZone using getDisplayName() method of TimeZone class
            System.out.println("Current TimeZone is : " + timeZone.getDisplayName());
            System.out.println( System.getProperty( "user.timezone" ) );

      }
    }, 0, 10, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

问题是,如果我使用控制面板单独手动修改时区,我的时区没有更新。

我读过一篇解释JVM时间问题的文章 Java System.getProperty(“ user.timezone”)不起作用

现在我需要检测系统时区变化

java timezone

5
推荐指数
1
解决办法
423
查看次数

标签 统计

timezone ×5

python ×4

datetime ×3

java ×1

python-3.9 ×1

pytz ×1

time ×1

utc ×1

zoneinfo ×1