【问题标题】:How to change datetime format in javascript?如何在javascript中更改日期时间格式?
【发布时间】:2016-07-13 16:11:17
【问题描述】:

我的代码是这样的:

var createdDate = '2013-01-21 01:23:44';
createdDate = new Date(createdDate);
date = createdDate.toLocaleDateString();
time = createdDate.toLocaleTimeString().replace(/(.*)\D\d+/, '$1');
console.log(date+' '+time);

结果:2013 年 1 月 21 日凌晨 1:23

我想要结果:2013-01-21 1:23 AM

有什么办法可以解决我的问题吗?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

当然,有一些普通的解决方案,但在 JS 中使用日期/时间通常很痛苦。如果您打算以任何严肃的身份处理日期/时间,我强烈建议您使用Moment.js 的格式方法,因为它的稳健性和灵活性,它应该能够做您想做的事情。

文档中的示例:

moment().format(); // "2014-09-08T08:02:17-05:00" (ISO 8601)
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
moment().format("ddd, hA");                       // "Sun, 3PM"
moment('gibberish').format('YYYY MM DD');         // "Invalid date"

【讨论】:

  • 谢谢,我用了一段时间,不知道它有这个能力。一个小补充:您可以直接将时间字符串加载到调用中,例如moment(time_string).format("DD.MM.YYYY HH:mm")
【解决方案2】:

您可以扩展 Number 类以允许填充零(以显示前面有零的个位数的日期和月份):

Number.prototype.pad = function(size) {
  var s = String(this);
  while (s.length < (size || 2)) {s = "0" + s;}
  return s;
}

pad 函数采用可选的size 参数,该参数指示数字字符串的总长度,默认值为2

然后您可以更新现有代码以将日期拆分为三个部分(在打印结果时使用 pad 函数):

var createdDate = new Date('2013-01-21 01:23:44');
var date = createdDate.toLocaleDateString();

var day = createdDate.getDate();
var month = createdDate.getMonth() + 1; //months are zero based
var year = createdDate.getFullYear();

var time = createdDate.toLocaleTimeString().replace(/(.*)\D\d+/, '$1');

console.log(year + '-' + month.pad() + '-' + day.pad() + ' ' + time);

如果您正在寻找更优雅或更简洁的解决方案,您将需要使用外部库。

【讨论】:

    猜你喜欢
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 2014-07-19
    • 2015-06-14
    • 2022-09-28
    • 1970-01-01
    相关资源
    最近更新 更多