存储UTC时间。在当地时间显示

时间:2012-09-16 11:04:23

标签: javascript asp.net-mvc datetime asp.net-mvc-4 client-side

我正在编写一个将在全球范围内使用的mvc4应用程序。部分应用程序是在添加或修改事务时进行记录。

所以我将事务日期时间保存为UTC。从客户端看我最好的方式来显示他们期待的日期?

这是我应该使用的javascript函数还是应该在视图中执行某些操作?

2 个答案:

答案 0 :(得分:0)

这取决于您的偏好。如果服务器端有用户时区,存储在数据库中,最简单的方法是使用DateTimeOffset

示例:Creating a DateTime in a specific Time Zone in c# fx 3.5

或者,使用JavaScript getTimezoneOffset() Method,设置cookie并在服务器上读取它。您还可以使用许多客户端库,尤其是在使用客户端模板时。

答案 1 :(得分:0)

在内部,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