【问题标题】:Convert date format into MM/DD/YYYY将日期格式转换为 MM/DD/YYYY
【发布时间】:2018-09-19 12:50:29
【问题描述】:

我有以这种格式输出的日期:

Thursday, October 11, 2018

我需要把它转换成

10/11/2018

但首先我正在努力摆脱一周中的某一天(星期四)。试图查看其他帖子,但找不到类似的内容。 非常感谢您

【问题讨论】:

  • 显示,你尝试了什么

标签: javascript string date locale date-format


【解决方案1】:

您需要使用Date#toLocaleDateString() method

你的代码会是这样的:

var str = "Thursday, October 11, 2018";
let d = new Date(str);
console.log(d.toLocaleDateString("en-US"))

注意:

要从字符串October 11, 2018 中获取10/11/2018,我们需要将"en-US" 指定为Locale 方法的Locale 参数,以便我们获得适当的输出,否则如果您在没有语言环境的情况下使用它,它可能会返回如果您的时区不同,则输出错误。

【讨论】:

  • OP 格式的解析也依赖于实现,不能保证内置解析器会正确解析它。此外,toLocaleString 的输出依赖于实现,因此不能保证它会产生所需的格式。
  • @RobG 如果它依赖于实现,它的实现将保证这一点。
  • “依赖于实现”意味着每个实现都可以自己决定如何处理它,因此结果可能会有所不同。关键是不能保证跨不同实现的结果。
【解决方案2】:

Javascript 可以解析提供的日期。

new Date("Thursday, October 11, 2018").toLocaleDateString("en-US")
// 10/11/2018

【讨论】:

  • 正如方法的名字所暗示的,如果你不带参数调用它,它的结果取决于用户的语言环境(在我的例子中它返回“11.10.2018”)
  • @barbsan 很好地指出,这就是为什么我们应该提供"en-US" 作为语言环境,所以我们确保得到10/11/2018 作为结果。
  • 好点。我将编辑以包含语言环境 - 我读到的问题更多关于字符串的解析,但你是对的,这不会完全回答备用语言环境中的问题
  • OP的时间戳格式与ECMA-262中指定的格式不一致,所以不能保证会被正确解析。
猜你喜欢
  • 2017-06-24
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2022-01-25
  • 2012-03-05
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多