Actionscript 3:获取特定时区的时间(不是计算机时区)

Actionscript 3 : get time to specific timezone (not the computer one)

我有一个 UTC 时间戳,我想在特定时区(例如法国当地时间)显示相应的日期和时间,这不是可能位于美国的计算机的本地时区。考虑到夏令时似乎很复杂。

在Flash/as3文档中,我只找到Date class没有指定时区的功能(只能使用本地时间或UTC)。

这是我在某个地方找到的一个函数,可能就在堆栈 oveflow 上,用于检查夏令时是否有效。

public static function isObservingDTS(): Boolean {
  var winter: Date = new Date(2011, 01, 01); // after daylight savings time ends
  var summer: Date = new Date(2011, 07, 01); // during daylight savings time
  var now: Date = new Date();

  var winterOffset: Number = winter.getTimezoneOffset();
  var summerOffset: Number = summer.getTimezoneOffset();
  var nowOffset: Number = now.getTimezoneOffset();

  if ((nowOffset == summerOffset) && (nowOffset != winterOffset)) {
    return true;
  } else {
    return false;
  }
}

flex 将保留 UTC 日期和时区偏移量。任何日期显示都将显示日期的时区更正形式,除非您计算新时间并将日期作为字符串吐出。像这样

private function convertToTimezone(dtDate: Date, timezoneOffset: Number = 0): String {
  //timezoneOffset in minutes
  dtDate.setTime(dtDate.getTime() + (timezoneOffset * 60000) + (isObservingDTS() ? (60 * 60 * 1000) : 0));

  return dtDate.toUTCString();
}

不是很优雅,但它应该能让你到达那里。

如果我理解你的问题,flash.globalization.DateTimeFormatter 就是你的解决方案。

The DateTimeFormatter class provides locale-sensitive formatting for Date objects and access to localized date field names. The methods of this class use functions and settings provided by the operating system.