使用 javascript 格式化日期字符串

Formatting date string with javascript

本文关键字:字符串 日期 格式化 javascript 使用      更新时间:2023-09-26

我有如下所示的日期字符串:

'Mon, 18 Jan 2016 05:05:21 EST -05:00'

我试图用瞬间做到这一点.js:

moment(new Date('Mon, 18 Jan 2016 05:05:21 EST -05:00'), "MM-DD-YYYY").toString();

但这返回:无效日期...

我该如何解决这个问题?

试试这个纯JS版本:

var d = new Date('Mon, 18 Jan 2016 05:05:21 EST -05:00');
document.getElementById("body").innerHTML = d.toLocaleDateString().replace(/'//g,"-")
<div id="body"></div>

尝试这种方式。

var strDate = 'Mon, 18 Jan 2016 05:05:21 EST -05:00';
strDate = new Date(strDate);
var strNewDate = new moment(strDate).format('MM-DD-YYYY');
console.log(strNewDate)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.1/moment.min.js"></script>

您需要将字符串转换为日期对象。然后创建时刻对象

当你使用momentjs时,不要使用Date。您必须提供自定义格式才能:

var input = 'Mon, 18 Jan 2016 05:05:21 EST -05:00';
// use custom format here
var date = moment(input, 'ddd, DD MMM YYYY HH:mm:ss ZZ');
// format() without argument return an ISO date
$('#pre').append(date.format());
$('#pre').append(''n');
$('#pre').append(date.format('YYYY-MM-DDTHH:mm:ss'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.1/moment.min.js"></script>
<pre id='pre'></pre>

moment(new Date('Mon, 18 Jan 2016 05:05:21 EST -05:00')).format('MM-DD-YYYY'); // 01-18-2016

没有现成的方法来解析EST -05:00。由于 EST -05 等于 UTC +00:00 ,因此您必须执行以下操作:

dateString = 'Mon, 18 Jan 2016 01:05:21 +00:00';
dateFormat = 'ddd, DD MMM YYYY HH:mm:ss ZZ';
moment(dateString, dateFormat).format("MM-DD-YYYY");