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.
我有一个 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.