我遇到了一个非常奇怪的Flex Date对象行为。我的Web服务是用.Net 3.5编写的,我正在检索或更新的所有对象都有.Net代码中的创建日期(日期类型)。
但是当我调用.Net Web服务并在Flex中显示数据时,Flex显示的日期与存储在Web服务中的日期不同。当我使用Flex UI更新我的对象时,每次更新时间都与.Net代码设置的实际更新时间非常不同。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:3)
您的日期问题可能是Flex与您的服务器之间如何处理时区和序列化的结果。我在使用Flex日期和Java方面遇到了问题,所以我将解释在那里遇到的一些事情:
答案 1 :(得分:0)
我没有立即回答,但需要考虑的一些因素是:
日期不明确吗?您没有提供返回可能的样本,但是像09/10/2009这样的日期是不明确的,除非两端都同意格式(dd / mm / yyyy或mm / dd / yyy)。
Flex基本上是ECMAScript的一种形式,IETF RFC 1123第5.2.14节中的格式应该正确解析。例如:
周一,2009年9月28日21:22:00 GMT
.NET中的Date对象应该能够产生(我记不起来了),Flex中的Date对象应该能够解析它。
答案 2 :(得分:0)
Flex app.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="init();">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
private function init():void
{
updateFlexTime();
}
private function updateFlexTime():void
{
flexTimeLabel.text = new Date().toString();
flexLocalTimeLabel.text = new Date().toLocaleString();
}
private function refreshHandler(event:Event):void
{
dateTimeService.GetCurrentDateTimeAsString();
}
private function onGetCurrentDateTimeAsString(event:ResultEvent):void
{
var value:String = String(event.result);
var currentDate:Date = new Date(Date.parse(value));
remoteTimeLabel.text = currentDate.toString();
remoteLocalTimeLabel.text = currentDate.toLocaleString();
updateFlexTime();
}
]]>
</mx:Script>
<mx:Form>
<mx:FormItem label="Flex time:">
<mx:Text id="flexTimeLabel"/>
</mx:FormItem>
<mx:FormItem label="Remote time:">
<mx:Text id="remoteTimeLabel"
text="Press refresh button."/>
</mx:FormItem>
<mx:FormItem label="Flex local time:">
<mx:Text id="flexLocalTimeLabel"/>
</mx:FormItem>
<mx:FormItem label="Remote local time:">
<mx:Text id="remoteLocalTimeLabel"
text="Press refresh button."/>
</mx:FormItem>
<mx:Button label="Refresh"
click="refreshHandler(event)"/>
</mx:Form>
<mx:WebService id="dateTimeService"
endpointURI="http://localhost:2054/TestService.asmx"
wsdl="http://localhost:2054/TestService.asmx?wsdl">
<mx:operation name="GetCurrentDateTimeAsString"
resultFormat="object"
result="onGetCurrentDateTimeAsString(event)"/>
</mx:WebService>
.Net WebService:
namespace Lab.StackOverflow
{
using System;
using System.Web.Services;
/// <summary>
/// Test date/time service
/// </summary>
[WebService(Namespace = "http://lab.stackoverflow.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class TestService : WebService
{
/// <summary>
/// Get current date and time
/// </summary>
/// <returns>
/// Return UTC date time by RFC 1123 standard.
/// </returns>
[WebMethod]
public string GetCurrentDateTimeAsString()
{
return string.Format("{0:r}{1:zz}", DateTime.Now, DateTime.Now);
}
}
}