【问题标题】:Javascript Date.UTC() returns previous dayJavascript Date.UTC() 返回前一天
【发布时间】:2020-09-20 07:11:24
【问题描述】:

我为日期选择器实现了以下方法。

getMyDate: function(date){
  var year = date.find('.year').val(); // fetch the selected date from picker
  var day = date.find('.day').val();
  var month = date.find('month').val()-1;

  return new Date(Date.UTC(year,month,day)); // This is always returning previous day
} 

有人可以告诉我如何根据选择器选择获得正确的日期吗?

【问题讨论】:

  • 你为什么要从一天中减去-1?
  • 是因为你在做var day = date.find('.day').val()-1;吗?为什么不只是var day = date.find('.day').val();?此外,JavaScript 中的月份索引为零。
  • 对不起,这是我打字时的错误。它是一个月而不是一天。我已经更新了我的代码。
  • 您的日期选择器是否将日期显示为本地日期而不是 UTC 日期?如果年-月-日组合代表本地日期,则应使用new Date(year, month, day)。如果它代表 UTC 日期,您应该寻找一个选项以使您的日期选择器相应地采取行动。
  • 在我的 HTMl 中,我有下拉日期选择器,值分别设置为月(一月至十二月)、年(2015 年至 2020 年)和日(1-31)。即使你得到当前日期。即使您尝试使用硬编码日期,它也会返回前一天,如下所示: alert(new Date(Date.UTC(2020,06,10)); // 返回错误日期

标签: javascript jquery datepicker


【解决方案1】:

UTC() 方法根据通用时间返回指定日期与 1970 年 1 月 1 日午夜之间的毫秒数。 我认为您的问题的原因是时区。 所以,请用您的时区更改日期。

请查看以下示例

var offset = -8;
new Date( Date.UTC(2020, 1, 8) + offset * 3600 * 1000).toUTCString().replace( / GMT$/, "" )

"Fri, 07 Feb 2020 16:00:00"

var offset = +8;
new Date( Date.UTC(2020, 1, 8) + offset * 3600 * 1000).toUTCString().replace( / GMT$/, "" )
"Sat, 08 Feb 2020 08:00:00"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2014-12-18
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多