Apache flex 灵活时区转换

Apache flex 灵活时区转换,apache-flex,Apache Flex,如何在flex4中将日期和时间转换为CDT时区 问候,, Sushma闪存中的对象始终设置为计算机的时间设置。如果计算机已经在CDT时区,那么只从对象获取任何属性都是好的。但是,如果要将时区“转换”为计算机未设置的时区,可以获取UTC时间并按如下方式进行偏移: var date:Date = new Date(); var timezone:int = -5; date.hours = date.hoursUTC + timezone; 然而,您正在尝试获取实际的CDT时间,这只在某些地区的夏

如何在flex4中将日期和时间转换为CDT时区

问候,, Sushma

闪存中的对象始终设置为计算机的时间设置。如果计算机已经在CDT时区,那么只从对象获取任何属性都是好的。但是,如果要将时区“转换”为计算机未设置的时区,可以获取UTC时间并按如下方式进行偏移:

var date:Date = new Date();
var timezone:int = -5;
date.hours = date.hoursUTC + timezone;
然而,您正在尝试获取实际的CDT时间,这只在某些地区的夏季有效。为此,Flash不可能准确地知道这是什么时候,除非你对例外情况进行编码,即如果在这个日期和那个日期之间,do-6,else do-5,并且你还需要知道用户的实际位置,除非用户向你提供该信息,否则通过Flash是不可能的


我能问你为什么要知道这样的事情吗

硬编码偏移量假设用户在CDT中,在这种情况下不需要转换。当前偏移量在Date.timezoneOffset中可用,并且有UTC方法可用于获取UTC.erm中的本地时间,我已经提到了吗?我甚至问他这段代码的意图是什么,因为可能有更好的方法。也许如果你费心先读的话……我读的是使用本地日期和时间的代码,并将其抵消为CDT;除非用户在UTC+0,否则这将不起作用。如果您将日期设置为UTC,那么是的,我同意您的方法和问题是合理的:获取UTC不是问题,但是,获取中心时间当量需要更多的工作,可以根据当前的DST规则进行,但只有在规则不变的情况下才适用。您认为date.hours=date.hours+date.timezoneOffset+timezone;做它以本地小时为单位,删除本地时区的偏移量,使您的小时数现在为UTC,然后添加CDT偏移量。实际上,现在我想起来了,我可以从一开始就计算UTC小时数。我需要更多的咖啡。但是,您的-1是不合理的。timezoneOffset以分钟为单位,因此我认为您当前的解决方案更好。现在我认为OP的原因将决定需要多少调整:如果这是在工作时间为美国居民提供的,我认为这就是您所需要的,但否则可能需要更多的代码。。。如果hoursUTC小于5,则减去CDT的偏移量将抛出一个错误,因此在这种情况下,您必须同时调整小时和日期。