将日期字符串转换为另一种字符串格

时间:2016-12-14 02:48:34

标签: javascript string datetime

我有这种格式的日期:

HttpResponseRedirect

我希望将此字符串转换为以下格式:

Tue Nov 15 2016 00:00:00 GMT+0800 (Malay Peninsula Standard Time)

我试过了:

 2016-11-15 00:00:00

2 个答案:

答案 0 :(得分:2)

我建议使用库moment.js。该库专门用于帮助处理日期和格式。

您只需要这样做:

let date = moment('Tue Nov 15 2016 00:00:00 GMT+0800').format('YYYY-MM-DD HH:mm:ss')
console.log(date)

然而,有一点需要注意。由于您提供的日期是非标准格式,您将收到弃用警告,如下所示:

  

弃用警告:提供的值不是公认的ISO格式。时刻构造回落到js Date(),这在所有浏览器和版本中都不可靠。不鼓励使用非ISO日期格式,并将在即将发布的主要版本中删除。有关详细信息,请参阅http://momentjs.com/guides/#/warnings/js-date/

基本上,解决方案是为您的日期提供标准格式。最简单的方法是切断时区,因为看起来您将显示日期,假设提供的TZ是本地的。

答案 1 :(得分:2)

你可以使用vanilla javascript完成它:

const date = new Date('Tue Nov 15 2016 00:00:00 GMT+0800 (Malay Peninsula Standard Time');

const day = date.getDate();
const month = date.getMonth() + 1;
const year = date.getFullYear();
const hours = date.getHours();
const minutes = date.getMinutes();
const seconds = date.getSeconds();

const timeToHHMMSS = (hours, minutes, seconds) => {
  return [hours, minutes, seconds].map(value => {
    return ('0' + value).slice(-2);
  }).join(':');
}

const formattedDate = `${year}-${month}-${day}`;
const formattedTime = timeToHHMMSS(hours, minutes, seconds);

console.log(`${formattedDate} ${formattedTime}`);