在生成Json对象的后台方法中,生成Json对象前将日期字段值转换成字符串类型!
这个好像是 后台 to json 会出现这种情况,
取出 1346818058450 然后 new Date(1346818058450) 就可以了
大概这样
var date = null; var reg = /\d{13}/ig; var results = this.match(reg); if(results && results.length >0 ) { date new Date(+results[0]); }
+0800也不能丢,在你结果的基础上要处理一下,否则不是东八区北京时间的话,就挂了。。。
@水牛刀刀: 哪你在取出后面的判断时区吧 !
这样试试?
formatDate: function(date) {
var d = new Date();
d.setTime(date.substring(date.indexOf('(') + 1, date.indexOf(')')));
return d.dateFormat('n/j g:i a');
}
最好是在后台用Newtonsoft.Json.dll来转json,可以方便设置日期转换成自己想要的格式。
Newtonsoft.Json.JsonConvert.SerializeObject(dt, new Newtonsoft.Json.Converters.DataTableConverter());
这是我现在的转Json代码,SerializeObject()有5个重载方法,我如何使用,可以方便设置日期转换成自己想要的日期格式?
@Jack·Chen:
IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();
timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";
string json = JsonConvert.SerializeObject(DateTime.Now, Formatting.Indented, timeConverter);
转换成时间以后,还要再加上时区
//时间转换
function renderTime(data) {
var da = eval('new ' + data.replace('/', '', 'g').replace('/', '', 'g'));
return da.toLocaleDateString() + " " + da.toLocaleTimeString();
}
应该没有内置函数,需要先把/Date(1346818058450+0800)/ 只留中间的毫秒数,在转换成时间,
toLocaleDateString为当前系统区域设置格式(toLocaleDateString和toLocaleTimeString)
http://www.cnblogs.com/dengshunping/archive/2009/06/15/1503803.html
这篇文章有比较详细的介绍