我正在编写一个将在全球范围内使用的mvc4应用程序。部分应用程序是在添加或修改事务时进行记录。
所以我将事务日期时间保存为UTC。从客户端看我最好的方式来显示他们期待的日期?
这是我应该使用的javascript函数还是应该在视图中执行某些操作?
答案 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