Moment.js将日期字符串转换为日期

时间:2016-07-07 17:29:58

标签: javascript date momentjs

跟进我之前的帖子:Javascript Safari: new Date() with strings returns invalid date when typed 我正在使用Moment.js根据文本框中的用户输入将日期字符串转换为日期字段。这是为了防止在Chrome浏览器正常时,我在Safari和Firefox的链接帖子中描述的问题无法呈现日期。 这是代码片段:

var tempDate = moment(userInputFieldDate).format('DD-MM-YYYY');
alert(tempDate);

在Chrome中,它确实正常工作(它也用于处理Javascript Date对象)但是给了我moment.js弃用警告

  

弃用警告:时刻构建回落到日期。这是不鼓励的,将在即将发布的主要版本中删除。有关详细信息,请参阅https://github.com/moment/moment/issues/1407。   参数:[object Object]   错误

在Firefox和Safari上,只是在警报窗口中提供了一个未完成的日期。所以不完全确定我应该怎么做才能将日期字符串转换为Date对象。有什么建议吗?

3 个答案:

答案 0 :(得分:63)

如果您获得基于JS的日期String,请先使用new Date(String)构造函数,然后将Date对象传递给moment方法。像:

var dateString = 'Thu Jul 15 2016 19:31:44 GMT+0200 (CEST)';
var dateObj = new Date(dateString);
var momentObj = moment(dateObj);
var momentString = momentObj.format('YYYY-MM-DD'); // 2016-07-15

如果dateString15-07-2016,那么您应该使用moment(date:String, format:String)方法

var dateString = '07-15-2016';
var momentObj = moment(dateString, 'MM-DD-YYYY');
var momentString = momentObj.format('YYYY-MM-DD'); // 2016-07-15

答案 1 :(得分:1)

如果您有日期字符串,则应该尝试一下。

const FORMAT = "YYYY ddd MMM DD HH:mm";

const theDate = moment("2019 Tue Apr 09 13:30", FORMAT);
// Tue Apr 09 2019 13:30:00 GMT+0300

const theDate1 = moment("2019 Tue Apr 09 13:30", FORMAT).format('LL')
// April 9, 2019

答案 2 :(得分:0)

又甜又简单!
moment('2020-12-04T09:52:03.915Z').format('lll');

2020年12月4日下午4:58

OtherFormats

moment.locale();         // en
moment().format('LT');   // 4:59 PM
moment().format('LTS');  // 4:59:47 PM
moment().format('L');    // 12/08/2020
moment().format('l');    // 12/8/2020
moment().format('LL');   // December 8, 2020
moment().format('ll');   // Dec 8, 2020
moment().format('LLL');  // December 8, 2020 4:59 PM
moment().format('lll');  // Dec 8, 2020 4:59 PM
moment().format('LLLL'); // Tuesday, December 8, 2020 4:59 PM
moment().format('llll'); // Tue, Dec 8, 2020 4:59 PM