我的公司正在为美国客户提供以下申请:

IBM大型机,DB2,Unix,Teradata,Oracle,SQL Server 2005,Lawson

由于夏令节的节省将从下个月开始,因此我想知道您对我们应该谨慎的全部想法,以便我们避免发生任何不良事件?

谢谢,维比希

有帮助吗?

解决方案

节省日光可能有些棘手,有些想法:

  • 日光节省的一天有23或25小时,而不是像往常一样24
  • 02:00h和03:00h之间存在差距,或者这些时间出现了两次

你必须 总是 当您从外部获取数据时,请使用时区,如果没有,您会遇到问题。例如,您不知道发件人是否已经更改了日光保存设置改变时间本身,这将使您陷入严重的麻烦。手机有时不会改变自己的日光设置,用户更改的时间只需将时间从02:00h更改为CET的03:00h!这显然是错误的,因为时间本身没有改变,这是时区!它仍然是02:00h CET,但03:00h Cest。

如果它们与时区更改正确使用,则可能应该检查使用的产品/库。

我测试了我们的python(带有mx.datetime)环境,如果正确地知道要使用的时区:

测试程序:

from mx.DateTime import *

def f(dt):
    return dt.Format("%Y-%m-%d %H:%M %Z")

base = ISO.ParseDateTime('2009-03-29 00:00')

for i in range(10):
    test = base + i*(30*oneMinute)
    diff = test.ticks()-base.ticks()

    print "Seconds between %s and %s: %d(%d) diff=%d" % (f(base),
                                                         f(test), diff,
                                                     i*1800, i*1800-diff)

对我来说,输出(3月29日居住在德国是夏令日):

$ python test.py
Seconds between 2009-03-29 00:00 CET and 2009-03-29 00:00 CET: 0(0) diff=0
Seconds between 2009-03-29 00:00 CET and 2009-03-29 00:30 CET: 1800(1800) diff=0
Seconds between 2009-03-29 00:00 CET and 2009-03-29 01:00 CET: 3600(3600) diff=0
Seconds between 2009-03-29 00:00 CET and 2009-03-29 01:30 CET: 5400(5400) diff=0
Seconds between 2009-03-29 00:00 CET and 2009-03-29 02:00 CEST: 7200(7200) diff=0
Seconds between 2009-03-29 00:00 CET and 2009-03-29 02:30 CEST: 9000(9000) diff=0
Seconds between 2009-03-29 00:00 CET and 2009-03-29 03:00 CEST: 7200(10800) diff=3600
Seconds between 2009-03-29 00:00 CET and 2009-03-29 03:30 CEST: 9000(12600) diff=3600
Seconds between 2009-03-29 00:00 CET and 2009-03-29 04:00 CEST: 10800(14400) diff=3600
Seconds between 2009-03-29 00:00 CET and 2009-03-29 04:30 CEST: 12600(16200) diff=3600

如您所见 mx.DateTime 这是正确的,但是有很多库和产品失败。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top