2

我有问题。使用Date()AS3 本身提供的功能,我将 UTC 时间转换为本地机器时间。

我遇到的问题是这个,看看monthand hour

2011-10-07 18:45:00 -> 2011-10-07 21:45:00
2011-11-07 18:45:00 -> 2011-11-07 20:45:00

这可能是因为夏令时,但我认为日期操作的本机函数考虑到了这一点。

我是对的,这就是问题所在?我应该自己考虑夏令时吗?还是有什么不同?

4

2 回答 2

1

日期文档:

Date 类处理夏令时的方式不同,具体取决于操作系统和运行时版本... Date 对象检测当前语言环境中是否使用夏令时,如果是,则检测标准到夏令时的转换日期和时间。

由此,我相信这意味着 Date 对象将检测当前时间的 DST。如果您正在寻找未来的日期,我认为您需要自己处理偏移量。

我过去曾使用此代码来解释在computus.org上找到的 DST :

public static function getTimezone():Number
{
  // Create two dates: one summer and one winter
  var d1:Date = new Date( 0, 0, 1 )
  var d2:Date = new Date( 0, 6, 1 )
 
  // largest value has no DST modifier
  var tzd:Number = Math.max( d1.timezoneOffset, d2.timezoneOffset )
 
  // convert to milliseconds
  return tzd * 60000
}
 
public static function getDST( d:Date ):Number
{
  var tzd:Number = getTimezone()
  var dst:Number = (d.timezoneOffset * 60000) - tzd
  return dst
}
于 2011-10-25T18:02:56.407 回答
0

如果您只想使用 select 语句从 UTC 0 返回 +2 日期值,并且您不必满足 DLST,例如南非 那么以下对我有用:

SELECT [FieldA]
       ,DATEADD(hour,2([DateField])) AS [NewDate]
FROM [Table]
于 2016-09-29T09:48:27.840 回答