当使用Javascript设置/获取值时,如何使datetime字段与时区无关
在我的项目中,有几个datetime类型的字段,比如航班的出发/到达日期和时间,这些字段应该与用户编辑它们时完全相同 我使用ASP.NETMVC3和dojo来构建应用程序。在后端,我可以将给定的值作为UTC时间处理并保存到DB。但当它使用Json传递到前端时,Javascript似乎将其调整为本地时间,页面上的日期/时间选择器显示调整后的值。似乎当我使用新日期(…)时,它会自动调整到本地时间 下面是我在第页上使用的解析函数(因为ASP.NET MVC3的JsonRest返回的日期类似于“/date(464371200000)/”)当使用Javascript设置/获取值时,如何使datetime字段与时区无关,javascript,asp.net-mvc,asp.net-mvc-3,Javascript,Asp.net Mvc,Asp.net Mvc 3,在我的项目中,有几个datetime类型的字段,比如航班的出发/到达日期和时间,这些字段应该与用户编辑它们时完全相同 我使用ASP.NETMVC3和dojo来构建应用程序。在后端,我可以将给定的值作为UTC时间处理并保存到DB。但当它使用Json传递到前端时,Javascript似乎将其调整为本地时间,页面上的日期/时间选择器显示调整后的值。似乎当我使用新日期(…)时,它会自动调整到本地时间 下面是我在第页上使用的解析函数(因为ASP.NET MVC3的JsonRest返回的日期类似于“/dat
我如何实施此案例?是否有最佳实践或示例?将UTC时间的返回值更改为以下值:
return new Date(parseInt(dateStr.substr(6))).toUTCString();
javascript中的所有日期在内部存储为UTC。如果您希望函数返回实际日期对象,并且在小部件中使用了某些方法,如getFullYear()
,它会将其转换为本地时间。如果要将其保持在UTC,则必须使用UTC方法,例如:
dateObj.getUTCFullYear(); // Year as a 4-Digit Number
dateObj.getUTCMonth(); // Month as a number from 0 - 11
dateObj.getUTCDate(); // Day of the Month as a number from 1 - 31
dateObj.getUTCDay(); // Day of the Week as a number from 0 - 6
dateObj.getUTCHours(); // Hours as a number from 0 - 23
dateObj.getUTCMinutes(); // Minutes as a number from 0 - 59
dateObj.getUTCSeconds(); // Seconds as a number from 0 - 59
dateObj.getUTCMilliseconds(); // Milliseconds as a number from 0 - 999
dateObj.toUTCString(); // The entire Date as a string in UTC
如果您希望设置对象,请使用与上面相同的方法,但更改单词get to set(例如-
dateObj.setUTCFullYear(1984);
)。但我需要将日期对象传递给小部件。我更改了答案以获得更多信息。我不太确定你到底想做什么,因为你只介绍了解析函数,但在一些小部件上遇到了问题。不管怎样,我希望这会有帮助。谢谢史蒂夫。我试过你的方法,经过一些简单的测试,效果很好。我需要更多的时间来测试,因为这确实是一个很大的修改。
dateObj.getUTCFullYear(); // Year as a 4-Digit Number
dateObj.getUTCMonth(); // Month as a number from 0 - 11
dateObj.getUTCDate(); // Day of the Month as a number from 1 - 31
dateObj.getUTCDay(); // Day of the Week as a number from 0 - 6
dateObj.getUTCHours(); // Hours as a number from 0 - 23
dateObj.getUTCMinutes(); // Minutes as a number from 0 - 59
dateObj.getUTCSeconds(); // Seconds as a number from 0 - 59
dateObj.getUTCMilliseconds(); // Milliseconds as a number from 0 - 999
dateObj.toUTCString(); // The entire Date as a string in UTC