如何在使用Javascript设置/获取值时使日期时间字段与时区无关
How to make datetime fields neutral to timezone when using Javascript to set/get value
在我的项目中,有几个日期时间类型的字段,比如航班的出发/到达日期和时间,这些字段应该与用户编辑它们时完全相同。
我使用ASP.NET MVC3和dojo来构建应用程序。在后端,我可以将给定的值处理为UTC时间,并将其保存到DB中。但当它使用Json传递到前端时,Javascript似乎将其调整为本地时间,页面上的日期/时间选择器显示调整后的值。似乎当我使用新日期(…)时,它会自动调整为本地时间。
下面是我在页面上使用的解析函数(因为ASP.NET MVC3的JsonRest返回的日期类似于"/date(4643712000000)/")。
function (/*string*/dateStr) {
if (!dateStr) {
return dateStr;
}
var jsonResultPattern = /Date'([+-]?('d+)')/;
if (dateStr.match(jsonResultPattern)) {
return new Date(parseInt(dateStr.substr(6)));
}
else {
return dateStr;
}
},
我该如何实施这种情况?是否有最佳实践或示例?
将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更改为set(例如-dateObj.setUTCFullYear(1984);
)。
相关文章:
- 在wordpress一定时间后更改自定义字段
- 微笑时间轴小部件添加自定义字段
- 我想用datetimepicker制作相关的时间字段
- 时间字段上的JavaScript验证(不接受0:00格式)
- 当出现多个字段时,jquery时间条目问题
- 将日期和时间变量组合为mysqli日期时间字段
- 日期-时间范围指令字段未显示任何值
- 如何使用JS/jQuery验证两个下拉字段中的时间值
- 需要在EXTJ的时间字段中显示07:00、15:00、23:00(增加8小时)
- 我需要使用mongodb本机驱动程序来查找按时间戳字段排序的不同id
- SQLite:从Phonegap/Cordova中的(文本)日期字段中选择日期和时间
- 让引导日期时间选择器出现在字段和图标上,而不重复
- 在 HTML 字段中填写本地日期时间和时区名称
- Extjs 根据开始时间字段中的输入将值设置为结束时间字段
- 引导日期时间选取器不适用于动态字段
- 隐藏日期时间字段上的日期部分 MS 动态 CRM 2011
- 在 JavaScript 中设置日期时间 SharePoint 字段的值
- 验证 asp.net 中的日期时间字段
- 验证包含日期和时间字段的表单,这些字段必须共同描述将来的日期和时间
- 没有时区的PostgreSQL字段时间戳 - 如何检查它是否等于今天