相关疑难解决方法(0)

夏令时和时区最佳实践

我希望能够将这个问题及其答案作为处理夏令时的权威指南,特别是处理实际的变更问题.

如果您有任何要添加的内容,请执行此操作

许多系统依赖于保持准确的时间,问题在于由于夏令时改变时间 - 向前或向后移动时钟.

例如,在订单获取系统中有一个业务规则取决于订单的时间 - 如果时钟发生变化,规则可能不那么明确.如何保持订单的时间?当然有无数的场景 - 这只是一个说明性的场景.

  • 你是如何处理夏令时问题的?
  • 您的解决方案中有哪些假设?(在这里寻找背景)

同样重要的是,如果不是这样的话:

  • 你尝试了哪些不起作用?
  • 为什么不起作用?

我会对编程,操作系统,数据持久性和该问题的其他相关方面感兴趣.

一般答案很好,但我也希望看到细节,特别是如果它们只在一个平台上可用.

timezone datetime utc datetimeoffset dst

2021
推荐指数
20
解决办法
40万
查看次数

获取Python中的当前时间(以毫秒为单位)?

如何在Python中获取当前时间(以毫秒为单位)?

python time datetime

468
推荐指数
13
解决办法
66万
查看次数

Python中的高精度时钟

有没有办法在Python中以高精度测量时间---比一秒更精确?我怀疑是否有跨平台的方式来做到这一点; 我对Unix上的高精度时间感兴趣,特别是在Sun SPARC机器上运行的Solaris.

timeit似乎能够进行高精度的时间测量,但我不想测量代码片段需要多长时间,而是想直接访问时间值.

python time

45
推荐指数
7
解决办法
8万
查看次数

在Python中以秒和纳秒获取POSIX/Unix时间?

我一直在努力找到一种方法来获取自1970-01-01 00:00:00 UTC以来的时间,以秒为单位,在python中以纳秒为单位,我找不到能给我正确精度的任何东西.

我尝试过使用时间模块,但是精度只有几微秒,所以我尝试的代码是:

import time

print time.time()
Run Code Online (Sandbox Code Playgroud)

这给了我这样的结果:

1267918039.01
Run Code Online (Sandbox Code Playgroud)

但是,我需要一个看起来像这样的结果:

1267918039.331291406
Run Code Online (Sandbox Code Playgroud)

有谁知道以秒和纳秒表达UNIX时间的可能方法?我找不到设置正确精度或以正确格式获得结果的方法.感谢您的任何帮助

python time posix

42
推荐指数
5
解决办法
6万
查看次数

datetime到Unix时间戳,精度为毫秒

我正在尝试做一些非常简单的事情,将datetime对象将来三天转换为Unix UTC时间戳:

import datetime, time
then = datetime.datetime.now() + datetime.timedelta(days=3)
# Method 1
print then.strftime("%s")
# Method 2
print time.mktime(then.timetuple())
# Method 3 
print time.mktime(then.timetuple()) * 1000
Run Code Online (Sandbox Code Playgroud)

方法1和2给我的Unix时间,,毫秒不和方法3给我毫秒,没有实际精确到毫秒.

当我简单地打印时then,我得到了datetime.datetime(2011, 11, 19, 15, 16, 8, 278271),所以我知道精度可用几毫秒.如何获得具有实际毫秒精度的Unix时间戳?如果它作为一个浮动返回,我必须将它变平为一个int,这没关系.有没有我正在寻找的解决方案呢?

python datetime

30
推荐指数
4
解决办法
5万
查看次数

pytz - 将UTC和时区转换为当地时间

我有一个datetimeutc时区,例如:

utc_time = datetime.datetime.utcnow()
Run Code Online (Sandbox Code Playgroud)

还有一个pytz时区对象:

tz = timezone('America/St_Johns')
Run Code Online (Sandbox Code Playgroud)

转换utc_time到给定时区的正确方法是什么?

python timezone utc pytz

30
推荐指数
5
解决办法
4万
查看次数

查看日期时间之间是否已经过了24小时 - Python

我有以下方法:

# last_updated is a datetime() object, representing the last time this program ran
def time_diff(last_updated):
    day_period = last_updated.replace(day=last_updated.day + 1, 
                                      hour=1,
                                      minute=0,  
                                      second=0,
                                      microsecond=0)
    delta_time = day_period - last_updated
    hours = delta_time.seconds // 3600
    # make sure a period of 24hrs have passed before shuffling
    if hours >= 24:
        print "hello"
    else:
        print "do nothing"
Run Code Online (Sandbox Code Playgroud)

我想知道从那以后24小时过去了last_updated,我怎么能这样做last_updated呢?

python timezone datetime

14
推荐指数
1
解决办法
9016
查看次数

python的time.time()方法如何工作?

time.time()方法为您提供时间戳,该时间戳基本上是自纪元(以UTC为单位)以来经过的时间.

datetime.fromtimestamp()表示如果未提供tz参数,则返回本地日期时间对象.

我知道tz信息基本上被视为utc的偏移量以获得当地时间.

如果是这种情况,则必须从平台中提取utc中的当前时间.

从底层平台提取当天的当前时间,无论是本地还是UTC?

time utc python-2.7

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

datetime.now() 的 Python 解析

from datetime import datetime
import time
for i in range(1000):
    curr_time  = datetime.now()
    print(curr_time)
    time.sleep(0.0001)
Run Code Online (Sandbox Code Playgroud)

我正在测试 的分辨率datetime.now()。由于它应该以微秒为单位输出,因此我预计每次打印都会有所不同。

然而,我总是得到类似的东西。

...
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
...
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?有什么方法可以获得精确到微秒的时间戳吗?实际上我不需要微秒,但能获得 0.1 毫秒的分辨率就很好了。

===更新====

我将其与使用 time.perf_counter() 进行比较,并添加到起始datetime 日期时间导入日期时间、timedelta 导入时间 …

python windows datetime python-3.4

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

python time.time() 和“夏令时”

当运行 python(Windows 或 Linux)的计算机的时钟自动更改并调用时会发生time.time()什么?

我读过time.time()当时钟手动更改为过去的某个值时, 的值会更小。

python time save dst

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

为什么Python的datetime.utcnow()总是返回相同的微秒值?

我正在玩Python的datetime.datetime.utcnow()方法,我注意到微秒值始终是相同的.

>>> import datetime
>>> datetime.datetime.utcnow()
datetime.datetime(2015, 11, 16, 23, 20, 46, 42286)
>>> datetime.datetime.utcnow()
datetime.datetime(2015, 11, 16, 23, 20, 55, 505286)
>>> datetime.datetime.utcnow()
datetime.datetime(2015, 11, 16, 23, 21, 1, 552286)
Run Code Online (Sandbox Code Playgroud)

注意微秒值是如何总是286.为什么会这样?我该怎么做才能解决这个问题?

更多信息:time.time()也总是有286us.毫秒值很好.我认为这实际上是根本原因,因为我相信datetime.datetime.utcnow()会调用time.time().


这是一个简短的脚本,表明它不仅仅是运气:

import datetime, random, time

for wait_time in [random.random() for _ in range(10)]:
    time.sleep(wait_time)
    print("Waited {}, result {}".format(wait_time, datetime.datetime.utcnow()))
Run Code Online (Sandbox Code Playgroud)

结果:

Waited 0.6074311218736113, result 2015-11-16 23:35:24.603286
Waited 0.960317012489652, result 2015-11-16 23:35:25.563286
Waited 0.13555474339177553, result 2015-11-16 23:35:25.698286
Waited 0.6179213307667111, result 2015-11-16 23:35:26.315286
Waited 0.2872301475401443, result 2015-11-16 23:35:26.602286 …
Run Code Online (Sandbox Code Playgroud)

python datetime python-3.x python-datetime python-3.4

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