对于日历应用,我有一个以字符串格式从moment.js返回的日期。
2017年6月16日星期五00:00:00 GMT-0500(中部夏令时)
如何将此字符串解析回“2017-06-16”,使用回溯的时刻指定这是一个无效的输入。使用它作为新Date()的实例返回给我一个不正确的日期。
var check = moment('Fri Jun 16 2017 00:00:00 GMT-0500 (Central Daylight Time)', 'YYYY/MM/DD');
var month = check.format('M');
var day = check.format('D');
var year = check.format('YYYY');
console.log(month, day, year);
//-->invalid date
答案 0 :(得分:1)
moment.js
。只需使用原生的Date()
构造函数。
const date = new Date('Fri Jun 16 2017 00:00:00 GMT-0500 (Central Daylight Time)');
const day = date.getDate();
const month = date.getMonth() + 1;
const year = date.getFullYear();
console.log(day, month, year);
如果您需要转换现有的moment.js日期:
const momentDate = ...;//insert your moment.js date here
const date = new Date(momentDate._i);
const day = date.getDate();
const month = date.getMonth();
const year = date.getFullYear();
console.log(day, month, year);
答案 1 :(得分:1)
完全同意Jordan Running的评论
该控制台输出未显示字符串。它显示一个名为date的对象属性,其值为Moment对象
由于您已经拥有了一个时刻对象(您的date
var),因此您只需使用format()
即可以您喜欢的格式显示时刻价值。
在您的情况下,您可以这样做:
date.format('YYYY-MM-DD');
这是一个实时样本:
var date = moment([2017, 5, 16]);
console.log(date); // Print moment object (like the one provided in the question)
console.log(date.format('YYYY-MM-DD')); // Print string output of format (in the desired format)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
答案 2 :(得分:0)
moment.js
...
var check = moment(new Date('Fri Jun 16 2017 00:00:00 GMT-0500 (Central Daylight Time)'));
var month = check.format('M');
var day = check.format('D');
var year = check.format('YYYY');
console.log(month, day, year);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
&#13;
答案 3 :(得分:-1)