【问题标题】:Date.parse, use local timezone when timezone is not specified in ISO format dateDate.parse,在 ISO 格式日期中未指定时区时使用本地时区
【发布时间】:2015-09-09 17:42:45
【问题描述】:

我尝试搜索此问题,但没有找到任何内容,因此请在标记为重复之前阅读整个问题。

documentation for Date.parse 指定当解析不包含时区信息的 ISO 格式日期时,假定为 UTC(在“假定时区的差异”部分下)。

我有一个没有时区信息的本地日期时间字符串:2015-09-08T11:27:30

如何让 Date.parse 将其解析为本地时间?

【问题讨论】:

  • 您可以尝试使用moment 库 - 使用原始原生 Date 函数更有效
  • 很遗憾,我现在不能介绍其他库。
  • 您可以在解析之前简单地将时区信息添加到字符串的末尾。

标签: javascript date


【解决方案1】:

试试这个功能,正如comment 中提到的类似问题。

function localizeDateStr(date_to_convert_str) {
  var date_to_convert = new Date(date_to_convert_str);
  var local_date = new Date();
  date_to_convert.setHours(date_to_convert.getHours() + (local_date.getTimezoneOffset()/60));
  return date_to_convert.toString();
}

alert(localizeDateStr('2015-09-08T11:27:30'));

这将从本地日期获取时区偏移量(除以 60 将分钟转换为小时),然后将该小时数添加到从您要本地化的字符串中解析的日期。然后,将其转换为字符串将显示正确的本地时间和时区。

或者,您可以只使用return date_to_convert; 来获取日期对象而不是字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多