积极答复者
MVC用JSON传递时间,为啥在controller接收的时候发现少了8个小时?

问题
-
本来是12点多的,传到另一边变成了4点多,请问该怎么改正?? student类里面的birthday属性为datetime类型
服务器传递的是直接return Json(Student);
而接收
var studentReader= new StreamReader(Request.InputStream); var student= JsonHelper.FromJson<Student>(studentReader.ReadToEnd());
JsonHelper里面的函数是:
public static T FromJson<T>(this string json) { return JsonConvert.DeserializeObject<T>(json); }
good good study,day day up.
- 已编辑 PEIYANGXINQU 2013年5月26日 7:37
答案
-
我们从.NET服务器端序列化一个DateTime对象的结果是一个字符串格式,如 '/Date(1335258540000)/' 这样的字串。
整数1335258540000实际上是一个1970 年 1 月 1 日 00:00:00至这个DateTime中间间隔的毫秒数。通过javascript用eval函数可以把这个日期字符串转换为一个带有时区的Date对象,如下
用var date = eval('new ' + eval('/Date(1335258540000)/').source) 这样即可得到一个JS对象
通过alert(date)查看比较清楚。
Tue Apr 24 17:09:00 UTC+0800 2012
通过这刚好是服务器的时区,东八区时间,也就是说还要加上8小时的纳秒,因为C#的时间戳单位是一千万分之一秒,一个小时3600秒,即8*3600*10000000
e-mail:ist_te@hotmail.com
- 已标记为答案 Will ShaoMicrosoft employee, Moderator 2013年6月3日 6:30
-
主要的因素是在于JSON格式不直接支持日期和时间。
详细请参考:http://blog.csdn.net/cncdns/article/details/6164389
e-mail:ist_te@hotmail.com
- 已标记为答案 Will ShaoMicrosoft employee, Moderator 2013年6月3日 6:30
全部回复
-
我们从.NET服务器端序列化一个DateTime对象的结果是一个字符串格式,如 '/Date(1335258540000)/' 这样的字串。
整数1335258540000实际上是一个1970 年 1 月 1 日 00:00:00至这个DateTime中间间隔的毫秒数。通过javascript用eval函数可以把这个日期字符串转换为一个带有时区的Date对象,如下
用var date = eval('new ' + eval('/Date(1335258540000)/').source) 这样即可得到一个JS对象
通过alert(date)查看比较清楚。
Tue Apr 24 17:09:00 UTC+0800 2012
通过这刚好是服务器的时区,东八区时间,也就是说还要加上8小时的纳秒,因为C#的时间戳单位是一千万分之一秒,一个小时3600秒,即8*3600*10000000
e-mail:ist_te@hotmail.com
- 已标记为答案 Will ShaoMicrosoft employee, Moderator 2013年6月3日 6:30
-
我们从.NET服务器端序列化一个DateTime对象的结果是一个字符串格式,如 '/Date(1335258540000)/' 这样的字串。
整数1335258540000实际上是一个1970 年 1 月 1 日 00:00:00至这个DateTime中间间隔的毫秒数。通过javascript用eval函数可以把这个日期字符串转换为一个带有时区的Date对象,如下
用var date = eval('new ' + eval('/Date(1335258540000)/').source) 这样即可得到一个JS对象
通过alert(date)查看比较清楚。
Tue Apr 24 17:09:00 UTC+0800 2012
通过这刚好是服务器的时区,东八区时间,也就是说还要加上8小时的纳秒,因为C#的时间戳单位是一千万分之一秒,一个小时3600秒,即8*3600*10000000
e-mail:ist_te@hotmail.com
如果服务器是在东七区,我在东九区,是不是获取的值要加上9个小时还是10个小时??good good study,day day up.
-
主要的因素是在于JSON格式不直接支持日期和时间。
详细请参考:http://blog.csdn.net/cncdns/article/details/6164389
e-mail:ist_te@hotmail.com
- 已标记为答案 Will ShaoMicrosoft employee, Moderator 2013年6月3日 6:30