将 JSON 日期时间转换为 JavaScript 日期时,它显示为比本地时区早 1 天
When converting a JSON DateTime to a JavaScript date it is showing as 1 day previous than the local timezone
我正在发出如下所示的 AJAX 请求:
$.ajax({
type: 'POST',
url: '@Url.Action("GetExpirationDates", "Products")',
data: data,
dataType: 'json',
success: function (data) {
var dateArray = data.map(function (date) {
var d = new Date(date);
return d.toLocaleDateString();
});
});
以下是data
的样子:
2016-02-25T00:00:00,2016-03-25T00:00:00,2016-04-25T00:00:00
似乎只要我这样做new Date(date)
这些日期中的每一个都有机会显示为
2/24/2016, 3/24/2016, 4/24/2016
(比应有的少一天)取决于当地时间。我知道这很可能是由于 JavaScript 处理时区的方式。我想知道如何修复它。
这取决于您希望如何使用最终结果。一个简单的例子是:
var d = new Date("2016-02-25T00:00:00");
d.getDate(); //returns 24 because my timezone is -06:00.
d.getUTCDate(); //returns 25, the UTC day of the month
对于getMonth/getUTCMonth也可以这样做。
我真的建议使用时刻。哪里像
moment("2016-02-25T00:00:00").format("MM/DD/YYYY"); //returns "02/25/2016"
它使您可以更好地控制 UTC 和格式化字符串。
试一试:
function getNow() {
var date = new Date(),
y = date.getFullYear(),
mo = date.getMonth() + 1,
d = date.getDate(),
h = date.getHours(),
m = date.getMinutes(),
s = date.getSeconds();
date.setDate(date.getDate());
mo = (mo < 10 ? '0' : '') + mo;
d = (d < 10 ? '0' : '') + d;
h = (h < 10 ? '0' : '') + h;
m = (m < 10 ? '0' : '') + m;
s = (s < 10 ? '0' : '') + s;
return h + ':' + m + ':' + s + ' - ' + mo + '/' + d + '/' + y;
}
如果在
使用ISO8601日期字符串时未指定 UTC 偏移量,浏览器将假定日期为 UTC。
将其表示为区域设置日期字符串将根据您的时区应用偏移量。
如果要获取 UTC 日期,可以使用
return d.toUTCString();
或者,如果您可以控制 JSON 服务,则可以在 ISO 字符串中指定日期所属的时区。
例如,UTC - 7 小时将表示为。
2016-02-25T00:00:00-0700,2016-03-25T00:00:00-0700,2016-04-25T00:00:00-0700
如果您的本地时区是 UTC - 7 小时,d.toLocaleString 将正确显示为
2/25/2016, 3/25/2016, 4/25/2016
相关文章:
- 获取用户选择的不带时区的日期
- 分析特定区域设置(而不是时区!)中的日期字符串
- moment.js在两个时区格式的日期之间存在差异
- 获取本地时间的JS日期,日期对象中没有时区详细信息
- Javascript-将时区添加到日期倒计时中
- 使用JavaScript日期的任何时间的时区偏移量
- javascript日期时区问题
- 读取本地时区的日期的Javascript
- 时刻时区.js允许我传递时区缩写并获取转换后的日期/时间
- 转换 JSON 日期,不考虑时区
- 如何使用 JavaScript 更改日期的时区而不更改时间
- 如何将 UTC 日期时间(字符串)转换为访问者时区
- Javascript 解析 json 日期时区不匹配会导致显示错误的日期
- NetSuite RESTlet,提交日期/时区问题
- JavaScript 日期时区的奇怪行为
- yyyy-mm-ddThh:mm:ss.sssZ日期/时区格式是什么,以及如何在JavaScript中复制它
- Node.js日期时区和getMonth()
- 时间戳日期时区问题在dojo
- 使用日期时区操作
- JavaScript/NodeJS-Mongo DB获取带偏移量的日期(时区)