Время UTC до GMT + 2 в AS3 - PullRequest
       60

Время UTC до GMT + 2 в AS3

2 голосов
/ 25 октября 2011

У меня проблема. Используя Date() функции, которые AS3 предоставляет изначально, я конвертирую время UTC в местное машинное время.

У меня проблема в том, посмотрите на month и 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

Это, вероятно, из-за перехода на летнее время, но я думал, что нативные функции для манипуляций с датами принимают это во внимание.

Я прав, в этом проблема? Я должен учитывать летнее время сам? Или это что-то другое?

Ответы [ 2 ]

1 голос
/ 25 октября 2011

С Дата Документация:

Класс Date по-разному обрабатывает переход на летнее время в зависимости от операционной системы и версии среды выполнения ... Объект Date определяет, используется ли переход на летнее время в текущей локали, и, если это так, обнаруживает стандартное дневное время. Экономия времени и даты перехода.

Исходя из этого, я считаю, что это означает, что объект Date будет обнаруживать DST в настоящее время. Если вы смотрите на дату в будущем, я думаю, вам нужно будет обработать смещение самостоятельно.

Я использовал этот код в прошлом для учета DST, найденного на computus.org :

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
}
0 голосов
/ 29 сентября 2016

Если вы просто хотите вернуть значение даты +2 из UTC 0, используя оператор выбора, и учитывая, что вам не нужно обслуживать DLST, примером будет Южная Африка. Тогда для меня сработало следующее:

SELECT [FieldA]
       ,DATEADD(hour,2([DateField])) AS [NewDate]
FROM [Table]
...