2011-05-11 69 views
1

我在使用JSON.NET庫從ASP.NET頁面生成的JSON中有日期。這些日期如下所示:如何使用ActionScript解析JSON日期?

"LastModifiedDate": "\/Date(1301412877000-0400)\/" 

如何使用Flex 3 Professional中的ActionScript解析這些日期?我想要以原生數據格式。

注意:我不是在這裏問的是如何解析與as3corelib JSON飼料。我有與該庫反序列化的JSON,但日期不解碼。這就是爲什麼我需要知道如何解碼這種日期格式。

回答

2

您將需要使用as3corelib的JSON實現來將您的字符串解碼爲Objects。

+0

這是行不通的。我應該說我使用as3corelib來獲取JSON。 JSON正確地綁定到我的網格,但日期未正確解碼。我是 – Ahmed 2011-05-11 19:13:59

+0

這是因爲你使用的日期是非標準的。 as3corelib解碼[w3c DTF格式(ISO 8601)](http://www.w3.org/TR/NOTE-datetime)。如果您希望它能夠工作或更改服務器的日期格式實現,則需要將字符串解碼爲Date。 – 2011-05-11 19:34:39

+0

這種日期格式很常見。 – Ahmed 2011-05-11 19:44:58

1

在ASP我用這個函數來獲取一個JSON日期

public static double JsonTime(DateTime dt) 
    {//Convert datetime to a Json Datetime 
     DateTime d1 = new DateTime(1970, 1, 1); 
     DateTime d2 = dt.ToUniversalTime(); 
     TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks); 
     return Math.Round(ts.TotalMilliseconds,0); 
    } 

,然後在JavaScript中使用:

if (data.indexOf("\/Date(")==7) 
     return new Date(+data.replace(/\D/g, '')); 

轉換回一個日期是否有幫助

你也會有單引號和雙引號的樂趣,但在我的生活中,我找不到在Net Framework 3上使用Json字符串的服務器端解碼器!

如果你在你的代碼中使用String =「\ u0027」,那麼字符串已經被轉換,最後我寫了一個關於使用循環做這項工作的函數。

string Padding = "000"; 
       for (int f = 1; f <= 256; f++) 
       { 
        string Hex = "\\u" + Padding.Substring(0, 4 - f.ToString().Length) + f; 
        string Dec = "&#" + Int32.Parse(f.ToString(), NumberStyles.HexNumber) + ";"; 
        HTML = HTML.Replace(Hex, Dec); 
       } 
       HTML = System.Web.HttpUtility.HtmlDecode(HTML); 

不好,我知道,但如果你有更好的答案,請讓我知道!

1
/** 
    * Converts 'Unix tick' format JSON Date to AS3 Date instances. 
    * Example json input: "{\"BarDate\":\"\/Date(1334672700000)\/\" }" 
    * Example json input: "{\"BarDate\":\"\/Date(1334672700000+0000)\/\" }" 
    * 
    * @param json date from JSON 
    * @return Date if conversion possible and worked else null. 
    */ 
    public static function parseJSONUnixTickDateToDate(json:String):Date 
    { 
     var date:Date = null; 
     if (json) 
     { 
      json = json.substring(json.indexOf("(") + 1, json.indexOf(")")); 
      var arr:Array = json.split("+"); 
      date = new Date(Number(arr[0])); 
     } 
     return date; 
    }