我遇到了一個非常奇怪的Flex Date對象行爲。我的Web服務是使用.Net 3.5編寫的,並且所有正在回顧或更新的對象都具有.Net代碼中的創建日期(日期類型)。Flex日期問題 - 顯示錯誤的日期
但是,當我調用.Net Web服務並在Flex中顯示數據時,Flex顯示與存儲在Web服務中的Date不同的Date。當我使用Flex UI更新我的對象時,每次更新時間與由.Net代碼設置的實際更新時間大不相同。
任何人都可以幫我解決這個問題嗎?
我遇到了一個非常奇怪的Flex Date對象行爲。我的Web服務是使用.Net 3.5編寫的,並且所有正在回顧或更新的對象都具有.Net代碼中的創建日期(日期類型)。Flex日期問題 - 顯示錯誤的日期
但是,當我調用.Net Web服務並在Flex中顯示數據時,Flex顯示與存儲在Web服務中的Date不同的Date。當我使用Flex UI更新我的對象時,每次更新時間與由.Net代碼設置的實際更新時間大不相同。
任何人都可以幫我解決這個問題嗎?
我沒有立即回答,但一些需要考慮的因素有:
是日期曖昧?您沒有提供樣本的回報可能是什麼樣的,但09/10/2009這樣的日期是不明確的,除非兩端都符合格式(日/月/年或月/日/年)。
Flex基本上是ECMAScript的一種形式,IETF RFC 1123第5.2.14節中的格式應該正確解析。例如:
星期一,2009年9月28日21點22分零零秒GMT
在.NET Date對象應該能夠產生(我不記得把我的頭頂部) Flex中的Date對象應該能夠解析它。
您的日期問題可能是Flex和您的服務器之間的時區和序列化處理的結果。我已經遇到Flex日期和Java的問題,所以我將解釋遇到的一些問題:
的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 Web服務:
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);
}
}
}
感謝您的示例.Web服務已被少數其他應用程序使用,並且Web服務團隊無法更改定義。有什麼方法可以將Web服務返回的日期時間轉換爲正確的日期格式。假設Web服務將返回datetiem NOT String.I嘗試將.Net Web服務返回的結果轉換爲XML.Web服務正在發送「2009-09-30T15:44:36.4667877-06:00」,並且flex正在獲取2009-09- XML中的30T23:02:23.877Z。它沒有一致的邏輯。每次我更新對象時,修改時間都與舊值非常不同。我無法理解Flex使用什麼邏輯來轉換日期時間值。 –
更多信息: 在.NET中webserice代碼返回日期爲2009-09-29T18:26 :21.3828335-06:00。 Flex將其顯示爲星期二九月29 19:30:09 GMT-0600 2009. 問題是,每當我更新我的對象時,.Net更新修改時間爲當前本地時間,但Flex在每次更新後顯示一個非常不同的時間。 將其轉換爲正確的當地時間的公式是什麼? –