2011-07-20 38 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())