将我的javascript日期时间从PST转换为UTC

时间:2011-03-26 23:00:43

标签: javascript datetime

我无意识地处理我的本地(PST)时区并打电话给UTC的网络服务。

webservice采用格式为“2011-02-09T12:00:00”的开始和结束日期,当前代码使用starttime = 30天前,endtime = now。

以下是代码:

var s = new Date(); 
var e = new Date(); 

s.setTime(d.getTime() - 30 * 24 * 60 * 60 * 1000);

var startdate = String.Format("datetime'{0:df(yyyy-MM-dd)}T{0:df(HH:mm:ss)}'", s);  
var enddate = String.Format("datetime'{0:df(yyyy-MM-dd)}T{0:df(HH:mm:ss)}'", e);

var url = String.Format("http://foo.com/webservice.svc/data?start={1}&end={2}&$format=json", startdate, enddate);
var obj = GetJsonObjectFromServer(url);

我已经尝试过向d和b添加25,200,000毫秒,但是这会导致s被作为无效日期返回(大概是因为它将来会把它放在哪里?)。

由于它正在使用PST,我的本地时区,我传递这些参数的网络服务并没有返回所有数据,因为它因为服务器是UTC而缺少8小时的跨度。

我尝试了一堆UTC方法,但问题是将其恢复为webservice所需的格式。我会感谢更直接的指导,而不仅仅是指向Javascript UTC方法。

这里有一些简单的东西,我很想帮忙!

4 个答案:

答案 0 :(得分:1)

JavaScript有一个UTC日期方法,只需使用它。

<script type="text/javascript">

var d=Date.UTC(2005,7,8);
document.write(d);

</script>

来自:http://www.w3schools.com/jsref/jsref_utc.asp

答案 1 :(得分:0)

如果您将日期作为日期对象传递,则Web服务应处理反序列化时的日期/时间转换。这至少是它如何与asp.net中的Web服务一起使用。

但是,请注意另一方面,因为从SQL Server返回的日期不是针对时区编码的,并且必须在序列化之前设置区域以使自动转换工作到浏览器。

答案 2 :(得分:0)

我遇到了类似的问题,希望同样的描述会对你有所帮助。 (不确定这是你的问题的根源)。

表达式“30 * 24 * 60 * 60 * 1000”实际上计算为整数,多次导致溢出。将它转换为长表达式为我解决了问题。换句话说,将“L”添加到上面的常量之一。 “30 * 24 * 60 * 60 * 1000L”。

答案 3 :(得分:-1)

事实证明,以毫秒为单位增加7小时是最简单的方法。即:

// get start date to be 30 days ago
var foo = (30 * 24 * 60 * 60 * 1000);
s.setTime(s.getTime() - foo + 25200000);
e.setTime(e.getTime() + 25200000);