3 回答

TA贡献1848条经验 获得超10个赞
既然你标记了你的问题momentjs,这里有一个使用 moment JS 库的解决方案。首先你拆分你的字符串,然后你格式化每个日期,最后你加入字符串。
注意:这会给你一个警告,因为初始日期格式不是标准化的。
const dates = 'Wed Nov 13 2019 00:00:00 GMT+0000 (UTC),Tue Nov 19 2019 00:00:00 GMT+0000 (UTC),Tue Nov 19 2019 00:00:00 GMT+0000 (UTC)'
const parseDates = dates => (
dates
.split(',')
.filter(date => moment(date).isValid())
.map(date => moment(date).format('MM/DD/YYYY'))
.join(',')
)
console.log(parseDates(dates));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
否则,如果您确定您的日期将始终具有相同的格式,您可以使用正则表达式手动解析它们:
const months = [ '', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
const dateRegex = /[\w]{3}\s{1}([\w]{3})\s{1}(\d{2})\s{1}(\d{0,4})\s/i
const dates = 'Wed Nov 13 2019 00:00:00 GMT+0000 (UTC),Tue Nov 19 2019 00:00:00 GMT+0000 (UTC),Tue Nov 19 2019 00:00:00 GMT+0000 (UTC)'
const parseDatesFallback = dates => (
dates
.split(',')
.map(date => {
date = date.match(dateRegex)
return String(months.indexOf(date[1])).padStart(2, '0')
+ '/'
+ date[2]
+ '/'
+ date[3]
})
.join(',')
)
console.log(parseDatesFallback(dates));

TA贡献1963条经验 获得超6个赞
您可以简单地将日期列表映射到所需的日期格式。使用splitandjoin方法将字符串转换为数组并返回。例子:
const dates = 'Wed Nov 13 2019 00:00:00 GMT+0000 (UTC),Tue Nov 19 2019 00:00:00 GMT+0000 (UTC),Tue Nov 19 2019 00:00:00 GMT+0000 (UTC)';
const newDates = dates.split(',')
.map(dateString => {
const date = new Date(dateString);
return `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`;
})
.join(',');
console.log(newDates);

TA贡献2039条经验 获得超7个赞
const str = 'Wed Nov 13 2019 00:00:00 GMT+0000 (UTC),Tue Nov 19 2019 00:00:00 GMT+0000 (UTC),Tue Nov 19 2019 00:00:00 GMT+0000 (UTC)'
const arr = str.split(',').map(a=>moment(a).format('MM/DD/YYYY'));
console.log(arr)
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.7.0/moment.min.js" type="text/javascript"></script>
添加回答
举报