我有一个webservice,例如返回一个DateTime对象:DepartureDate。 我使用ajax来获取它,在我的视图中,我使用此函数将JSON日期字符串转换为javascript日期对象:
function convertToDate(jsonDate) {
return eval("new " + jsonDate.substring(1, jsonDate.length - 1));
}
问题是new Date()
需要考虑客户端计算机上的本地时间,因此不同国家/地区的客户会获得不同的日期。我想获得从webservice返回的确切日期。
有没有简单的方法来实现这个目标?
答案 0 :(得分:6)
问题是
new Date()
考虑了客户端计算机上的本地时间
不。使用timestamp构造函数创建新Date需要UTC时间戳。
例如在我的机器上使用UTC + 1:
new Date(0) // Thu Jan 01 1970 01:00:00 GMT+0100 (CET)
好的,默认的toString
显示这个日期为01:00:00 看起来错误,但这实际上是正确的时间。 UTC + 1中的01:00:00是UTC中的00:00:00,这是时间戳0
描述的时刻。
如果您要显示从UTC时间戳创建的日期,请使用date.toUTCString()
或使用getUTCFullYear()
,getUTCMonth()
等获取和格式化日期的撰写部分。
但请不要eval
。
new Date(parseInt(jsonDate.slice(6, -1), 10))