我正在编写一个将在全球范围内使用的 mvc4 应用程序。应用程序的一部分正在记录添加或修改事务的时间。
所以我将交易日期时间保存为 UTC。从客户端,我最好的方式来显示他们期望的日期是什么?
这是我应该使用的javascript函数还是应该在视图中做某事?
我正在编写一个将在全球范围内使用的 mvc4 应用程序。应用程序的一部分正在记录添加或修改事务的时间。
所以我将交易日期时间保存为 UTC。从客户端,我最好的方式来显示他们期望的日期是什么?
这是我应该使用的javascript函数还是应该在视图中做某事?
这取决于您的喜好。如果您在服务器端有用户时区,存储在数据库中,最简单的方法是使用DateTimeOffset
.
示例:在 c# fx 3.5 中的特定时区创建 DateTime。
或者,使用JavaScript getTimezoneOffset() 方法,设置 cookie 并在服务器上读取它。您也可以使用许多客户端库,特别是如果您使用客户端模板。
在内部,javascript 日期对象将时间存储为自一个纪元 UTC (1970-01-01T00:00:00Z) 以来的毫秒数。传输时间的最简单方法是使用该数字,因此:
// 2012-09-16T10:30:00.000Z
var ms = 1347791400000;
// Create a new date object using UTC milliseconds
var d = new Date(ms);
alert(d); // Shows local time equivalent, e.g. 2012-09-16T20:30:00GMT+1000
或者,您可以传递 UTC 时间戳,将其拆分为组件并使用Date.UTC将其转换为日期对象。请注意,月份是从零开始的,因此必须从日历月份数中减去一个。
要获取本地时间的 UTC 毫秒值,请使用Date.prototype.getTime。对于上面的例子:
alert(d.getTime()); // 1347791400000