2011-07-20 49 views
1
Date.parseWeird=Date.prototype.parseWeird=function(d) 
{ 
    return new Date(Date.parse(d)); 
}; 

var d = /Date(-65424600000)/ 

如何解析此日期並以MM/DD/YY格式顯示。解析JavaScript中的日期對象

16/09/1956 
+1

什麼是預期的字符串? – alex

+1

我並不是真的在這裏理解這個問題。你是否試圖將負數解析爲「日期」? – Pat

+0

'/ Date(-65424600000)/'是什麼樣的東西? –

回答

2

我刪除多餘的:

Date.parseWeird=Date.prototype.parseWeird=function(d) 
{ 
    return new Date(parseInt(/-?\d+/.exec(d)[0], 10)); 
}; 

var x = Date.parseWeird('/Date(-65424600000)/'); 
alert((x.getMonth()+1) + "/" + x.getDate() + "/" + x.getFullYear()); 

快遞正在尋找0或1,?,負號,後面跟上任意數量,+,數字,\d

+0

謝謝...這個代碼.. u能解釋我經常表達研究一點點的,什麼是不EXEC –

+2

不要忘了'x.getMonth()+ 1' –

+0

約翰我已經解釋的表達。 @亞歷克斯,謝謝你指出。我總是忘記這一點。 – Joe

2

取而代之的是客戶端固定它,interoping時修復它在服務器上

http://james.newtonking.com/archive/2009/02/20/good-date-times-with-json-net.aspx

JsonConverters

由於沒有標準的JSON,可能不同 格式數量日期與其他系統是無止境的。好在 Json.NET有一個解決方案來處理讀寫自定義日期: JsonConverters。 JsonConverter用於覆蓋序列號爲 的類型。

public class LogEntry 
{ 
    public string Details { get; set; } 
    public DateTime LogDate { get; set; } 
} 

[測試]

public void WriteJsonDates() 
{ 
    LogEntry entry = new LogEntry 
    { 
    LogDate = new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc), 
    Details = "Application started." 
    }; 

    string defaultJson = JsonConvert.SerializeObject(entry); 

    // {"Details":"Application started.","LogDate":"\/Date(1234656000000)\/"} 

    string javascriptJson = JsonConvert.SerializeObject(entry, new JavaScriptDateTimeConverter()); 

    // {"Details":"Application started.","LogDate":new Date(1234656000000)} 

    string isoJson = JsonConvert.SerializeObject(entry, new IsoDateTimeConverter()); 

    // {"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"} 

} 

如果不是,這是否對你的工作?

DEMO HERE

Date.parseWeird=Date.prototype.parseWeird=function(d) { 
    // remove anything not a digit or - and convert to number 
    return new Date(parseInt(d.replace(/[^\-\d]/g,""),10)); 
}; 

var d = "\/Date(-65424600000)\/" 
var newDate = Date.parseWeird(d); 
var mm = newDate.getMonth()+1; 
if (mm<10) mm="0"+mm; 
var dd = newDate.getDate(); 
if (dd<10) dd="0"+dd; 
document.write(""+mm+"/"+dd+"/"+newDate.getFullYear())