justin-zhengyi-wu / blogs

My Blogs
http://blog.justin4u.com/
4 stars 0 forks source link

Use ActionScript to generate UTC time string #17

Open justin-zhengyi-wu opened 10 years ago

justin-zhengyi-wu commented 10 years ago

在Java中,我们可以简单地使用Formatter来format Date对象。如下:

  import java.text.SimpleDateFormat;
  import java.util.TimeZone;
  public String getCurrentUTCTimeString() {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
        formatter.setTimeZone(TimeZone.getTimeZone("GMT-00"));
        return formatter.format(new Date());
    }

但是在Flex端,你无法给Date或者是其Formatter设置上timeZone信息。

它format出来的字符串是本地浏览器所在的时区的时间。我的Workaround是给生成出来的时间加上它离UTC时间的距离后再做format,如下:

import mx.formatters.DateFormatter;
public function getCurrentUTCTimeString():String {
    var dateTime:Date = new Date();
    var timezoneOffset:Number = dateTime.getTimezoneOffset();
    dateTime.setMinutes(dateTime.getMinutes() + timezoneOffset);
    var formatter:DateFormatter = new DateFormatter();
    formatter.formatString = "YYYY-MM-DDTHH:NN:SS.QQQZ";
    return formatter.format(dateTime);
}

参考:

http://forums.adobe.com/message/247102