2013-04-06 39 views
2

我有一个ASP.NET WEB.API 4和控制器返回以下JSON:日期在.NET VS在javascript

{ date: "2013-03-14T00:00:00" } 

我解析它的客户端(JavaScript的)上:

date = new Date(json.date); // json.date being "2013-03-14T00:00:00" 

后来我做了自检,并在体内的日期已经改变格式

{ date: "2013-03-13T23:00:00.000Z" } 

我的猜测是,一些时区的东西已经被b中加入JavaScript或浏览器?

因为DB存储日期为INT(YYYYMMDD)i执行以下皈依的:

public static int ToInt(DateTime date) 
{ 
    return date.Year * 10000 + date.Month * 100 + date.Day; 
} 

所得int是然后休息一天:(

但是如果我做

date.ToLocalTime() 

在调用ToInt方法之前,它看起来很好。

我是否支持这是正确的,并且是ToLocalTime()一个足够的解决方案,还是我需要花费一天时间读取.NET和JavaScript中的UTC日期?

谢谢!

+2

欢迎来到地狱称为“JS日期”尝试使用类似datejs或momentjs的库:/ – Aviatrix 2013-04-06 14:12:32

+0

您将日期存储为'int(yyyymmdd)'???你使用什么数据库? – Bergi 2013-04-06 15:30:08

+0

@Bergi sql 2000.问题是谁在90年代写了sw回的:) – Cotten 2013-04-08 05:02:36

回答

1
date = new Date(json.date); // json.date being "2013-03-14T00:00:00" 

,是什么时区是在json.date?如果没有关于此的信息,JS Date constructor会认为它是客户端的本地时区(而且这是非常随机的)。如果你希望它是UTC,只需添加"Z"您的ISO-datestring后:

date = new Date(json.date+"Z"); 

而且总是用[gs]etUTC(FullYear|Month|Date|…)方法即可。