【问题标题】:Date Format in standard JavaScript标准 JavaScript 中的日期格式
【发布时间】:2017-03-15 12:20:08
【问题描述】:

我有一个“2017 年 3 月 15 日下午 5:06:16”格式的日期,我必须将其转换为浏览器的时区,我正在使用 javascript 中的“日期”执行此操作,但我得到的最后时间是“ 2017 年 3 月 15 日,下午 5:06:16”格式我必须将其更改为“2017 年 3 月 15 日下午 5:06:16”

如何使用 JavaScript 实现这一点?

我尝试过 JavaScript 内置函数,例如

(1) toISOString

(2) 本地字符串

(3) 转UTC字符串

但没有运气,我觉得没有标准的 js 方法。谁能给我一段可以将其更改为所需格式的代码?

【问题讨论】:

  • 你真的应该考虑使用momentjs库,它功能强大,你想要的一切都可以通过moment的功能来实现......
  • 如果这不起作用,请发表评论,但 moment.js 是一个非常有用的库,适用于所有日期。
  • 我建议使用 moment.js。通常,当您计划大量使用日期对象时,该库会提供多种实用程序,例如自定义格式、日期解析、相对时间等
  • 实际上这是我唯一的日期用例,所以我不想使用 moment.js,但我相信必须有一些东西可以用来格式化我的日期。

标签: javascript time


【解决方案1】:

您不必使用不同的方法,您可以简单地使用字符串操作,如果您想要自定义日期字符串显示并且不想加载任何额外的库,例如 momentjs:

var months = [ 'Jan', ... ];
var parts = Date.toString() // 3/15/2017, 5:06:16 PM
            .split('/');    // [ "3", "15", "2017, 5:06:16 PM" ]

console.log( months[ parts[ 0 ] ] + " " + parts[ 1 ] + ", " + parts[ 2 ] );

这绝对不是唯一的解决方案,但是每当你想改变任何东西的显示格式时,你总是可以提醒自己你可以使用字符串操作。一种在语义上更正确的方法是不进行任何字符串操作,而是将Date.getMonth 放在字符串的所需部分中。

如果你使用的是 ES6,你可以让它变得非常漂亮:

console.log( `${monthString} ${dayNum}, ${yearNum} ${hourNum % 12}:${leftPad(minuteNum,2)}:${leftPad(secondNum,2)} ${hourNum < 12 ? 'PM' : 'AM'} ` );

【讨论】:

  • 这肯定会降低代码标准,所以我决定不使用它
  • 由您来编写语义正确的完整代码并使其美观。但这是最明智的方式,只要你不想使用库
  • @whishky 如果您不想使用库,那么您必须执行与此答案类似的操作。没有标准函数可以按照您想要的方式格式化日期。
  • @JJJ 我想这样说“没有其他方法”似乎有点粗鲁,我们总是可以使用“据我所知”。无论如何感谢您的帮助
猜你喜欢
  • 2014-08-17
  • 2016-01-10
  • 2018-01-03
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多