当前位置: 首页 > 面试题库 >

JavaScript为什么Date.parse给出不正确的结果?

花品
2023-03-14
问题内容

情况一:

new Date(Date.parse("Jul 8, 2005"));

输出:

2005年7月8日星期五00:00:00 GMT-0700(PST)

案例二:

new Date(Date.parse("2005-07-08"));

输出:

Thu Jul 07 2005 17:00:00 GMT-0700(PST)

为什么第二次解析不正确?


问题答案:

在第5版规范发布之前,该Date.parse方法完全依赖于实现(除后者返回数字而不是a之外,其他方法new Date(string)等效)。在第5版规范中,添加了该要求以支持简化的(并且略有错误) ISO-8601(另请参见JavaScript中有效的日期时间字符串是什么?)。但是除此之外,除了必须接受任何Date#toString输出(不说那是什么)之外,对什么/ 应该接受没有任何要求。Date.parse(string)DateDate.parsenew Date(string)

从ECMAScript 2017(版本8)开始,要求实现解析Date#toString和Date#toUTCString的输出,但未指定这些字符串的格式。

从ECMAScript 2019(版本9)开始,Date#toStringDate#toUTCString的格式分别指定为:

  • ddd MMM DD YYYY HH:mm:ss ZZ [(时区名称)]
  • 例如Tue Jul 10 2018 18:39:58 GMT + 0530(IST)
  • ddd,DD MMM YYYY HH:mm:ss Z
    例如 2019年7月10日星期二13:09:58 GMT
    提供了Date.parse应该在新的实现中可靠地解析的另外2种格式(请注意,支持并不普遍,并且不兼容的实现将在一段时间内继续使用)。

我建议手动解析日期字符串,并将Date构造函数与年,月和日参数一起使用,以避免产生歧义:

// parse a date in yyyy-mm-dd format
function parseDate(input) {
  var parts = input.split('-');
  // new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
  return new Date(parts[0], parts[1]-1, parts[2]); // Note: months are 0-based
}


 类似资料:
  • 我一直在研究一些涉及将ASCII值转换为字符串的问题。 如果我使用此代码,我会以的形式输出,这是意料之中的。 但是,如果我这样更改代码: 当我尝试编译它时,会显示以下错误: 两种代码之间的唯一区别是,在第1种代码中,我使用的是t=I‘a’ ,在秒时,<代码>t=t i“a” 。 有人能告诉我第二段有什么问题吗?

  • 问题内容: 我尝试将matlab代码转换为numpy,并发现numpy与std函数的结果不同。 在matlab中 在numpy中 这正常吗?我应该如何处理呢? 问题答案: NumPy函数采用一个可选参数:“自由度增量”。默认情况下是。对其进行设置以获取MATLAB结果: 要添加更多上下文,在计算方差(标准偏差为平方根)时,通常将其除以我们拥有的值的数量。 但是,如果我们从较大的分布中选择元素的随机

  • 我尝试像这样查询api: http://api.openweathermap.org/data/2.5/weather?q=kuwait 但是,它给了我与国家“PE”相关的结果。我下载了网站上引用的国家代码json文件,并用“科威特”这个词搜索了所有城市,只有1个城市是:“科威特城”,一个是“科威特”。为什么API在搜索“科威特”时会返回国家“PE”? 我也用了

  • “条件是正确的,但结果是空的,为什么?当我没有添加索引时,查询结果是正确的。

  • 这是一个优化问题,我正试图用我使用的opl代码来解决(稍微有点扭曲)。 opl代码为我提供了两种解决方案,即:{Product12,Product31} 当我使用docplex将此代码翻译为python语言时,我使用以下代码: 我明白了: ***问题没有解决方案 我不明白为什么我有不同的结果,有人能帮我吗? 先谢谢你。 当做

  • 当我在本文中使用<code>dplyr::case_when<code>而不是<code>if<code>时,我注意到了下面的这种行为。如果第二个分支的输出是一个显式字符串,它将按预期工作,但如果指定了<code>x</code>本身,结果将发生变化。 为什么只有< code>case_when给出不同的结果? 由reprex软件包(v2.0.1)于2022年8月16日创建