flex3格式日期没有时区
-
19-09-2019 - |
题
自1-1-1970以来,我正在收到从毫秒的服务器的日期。然后,我使用dateformatter将日期打印到屏幕上。但是,FLEX添加了定时差,因此它显示的时间与我从服务器获得的时间不同。我已经通过更改日期在打印到屏幕之前修复了此问题。但是我认为这是一个不好的解决方案,因为日期对象无法保留正确的日期。
有人知道如何使用dateformatter打印日期,忽略了时区吗?
这就是我这样做的方式:
function getDateString(value:Date):String
{
var millisecondsPerMinute:int = 1000*60;
var newDate:Date = new Date(value.time - (millisecondsPerMinute*value.timezoneOffset));
var dateFormatter:DateFormatter = new DateFormatter();
dateFormatter.formatString = "EEEE DD-MM-YYYY LL:MM AA";
return dateFormatter.format(newDate);
}
解决方案
也许我缺少一些东西,但这似乎对我有用。
<?xml version="1.0"?>
<!-- formatters\FormatterDateField.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<!-- Declare a DateFormatter and define formatting parameters.-->
<mx:DateFormatter id="dateFormatter"
formatString="EEEE DD-MM-YYYY LL:NN:SS AA"/>
<mx:Label text="Millis (1220836618601 == Monday 08-09-2008 01:16:58 AM):"/>
<mx:TextInput id="dob" text="1220836618601"/>
<mx:Label text="Formatted date UTC: "/>
<mx:TextInput id="formattedDate"
text=""
editable="false"/>
<mx:Label text="Formatted date local: "/>
<mx:TextInput id="formattedDateLoc"
text=""
editable="false"/>
<!-- Format and update the date.-->
<mx:Button label="Format Input"
click="
var d :Date = new Date(parseInt(dob.text));
formattedDate.text=dateFormatter.format(d.toUTCString());
formattedDateLoc.text=dateFormatter.format(d);
"/>
</mx:Application>
建议不要将日期对象(依赖时区依赖)传递到dateformatter中,而是传递日期对象的UTC字符串。我没有发现任何建议dateFormatter对时区有任何作用的东西,因此无需尝试补偿时区,尤其是当日期对象已经提供了获取UTC的方法时。
function getDateString(value:Date):String
{
var dateFormatter:DateFormatter = new DateFormatter();
dateFormatter.formatString = "EEEE DD-MM-YYYY LL:MM AA";
return dateFormatter.format(value.toUTCString());
}
其他提示
在Flex Hero 4.5中,您可以使用新的 Spark DateTimeFormatter:
<s:DateTimeFormatter dateTimePattern="HH':'mm':'ss" id="dateFormatterUTC" useUTC="true" />
<s:Label text="{dateFormatterUTC.format(new Date())}" />
最简单的修复方法是拥有尽可能多的对象(对象的属性)是字符串。 TimeZoneOffset解决方案效果很好,但是美国许多城市的TimeZoneOffset在这一年两次变化。最好的规则 - 一切都是字符串。
不隶属于 StackOverflow