我注意到JavaScript的新Date()函数在接受多种格式的日期方面非常聪明。

Xmas95 = new Date("25 Dec, 1995 23:15:00")
Xmas95 = new Date("2009 06 12,12:52:39")
Xmas95 = new Date("20 09 2006,12:52:39")

调用new Date()函数时,我在任何地方都找不到显示所有有效字符串格式的文档。

这用于将字符串转换为日期。如果我们从相反的方面来看,即将日期对象转换为字符串,直到现在,我的印象是JavaScript没有将日期对象格式化为字符串的内置API。

编者按:以下方法是询问者在特定浏览器上的尝试,但通常不起作用;请参阅本页上的答案以了解一些实际解决方案。

今天,我在date对象上使用了toString()方法,令人惊讶的是,它可以将日期格式化为字符串。

var d1 = new Date();
d1.toString('yyyy-MM-dd');       //Returns "2009-06-29" in Internet Explorer, but not Firefox or Chrome
d1.toString('dddd, MMMM ,yyyy')  //Returns "Monday, June 29,2009" in Internet Explorer, but not Firefox or Chrome

在这里,我也找不到任何关于将日期对象格式化为字符串的方法的文档。

列出Date()对象支持的格式说明符的文档在哪里?


当前回答

设置日期格式以返回“2012-12-29”的正确方法是使用JavaScript日期格式中的脚本:

var d1 = new Date();
return d1.format("dd-m-yy");

此代码不起作用:

var d1 = new Date();
d1.toString('yyyy-MM-dd');      

其他回答

动量.js

它是一个(轻量级)*JavaScript日期库,用于解析、处理和格式化日期。

var a = moment([2010, 1, 14, 15, 25, 50, 125]);
a.format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
a.format("ddd, hA");                       // "Sun, 3PM"

(*)轻量级意味着在尽可能小的设置中缩小9.3KB+gzip(2014年2月)

列出Date()对象支持的格式说明符的文档在哪里?

今天我偶然发现了这一点,很惊讶没有人花时间回答这个简单的问题。的确,有很多库可以帮助处理日期操作。有些人比其他人好。但这不是问的问题。

AFAIK,纯JavaScript不支持您所表示的格式说明符。但它确实支持格式化日期和/或时间的方法,例如.toLocaleDateString()、.toLocaleTimeString()和.toUTCString()。

我最常使用的Date对象引用是在w3schools.com网站上(但快速的谷歌搜索会发现更多可能更好地满足您的需求)。

还要注意,Date Object财产部分提供了一个到原型的链接,该链接说明了使用自定义方法扩展Date对象的一些方法。多年来,JavaScript社区一直在争论这是否是最佳实践,我并不是支持或反对它,只是指出它的存在。

所有浏览器

使用所使用的源格式格式化日期的最可靠方法是应用以下步骤:

使用new Date()创建Date对象使用.getDate()、.getMonth()和.getFullYear()分别获取日期、月份和年份根据目标格式将碎片粘贴在一起

例子:

var date='2015-11-09T10:46:15.097Z';函数格式(输入){var date=新日期(输入);返回[(“0”+date.getDate()).sslice(-2),(“0”+(date.getMonth()+1)).sslice(-2),date.getFullYear()].ejoin('/');}document.body.innerHTML=格式(日期);//产量:2015年9月11日

(另请参见此Fiddle)。


仅限现代浏览器

您还可以使用内置的.toLocaleDateString方法为您进行格式化。您只需要传递正确的区域设置和选项以匹配正确的格式,不幸的是,只有现代浏览器才支持这种格式(*):

var date='2015-11-09T10:46:15.097Z';函数格式(输入){返回新日期(输入).toLocaleDateString('en-GB'{年份:'数字',月份:'2-位',天:'2位数'});}document.body.innerHTML=格式(日期);//产量:2015年9月11日

(另请参见此Fiddle)。


(*)根据MDN,“现代浏览器”是指Chrome 24+、Firefox 29+、IE11、Edge12+、Opera 15+和Safari夜间版本

在JavaScript中格式化,尤其是解析日期可能有点头疼。并非所有浏览器都以相同的方式处理日期。因此,虽然了解基本方法很有用,但使用助手库更实用。

Adam Shaw的XDate javascript库自2011年年中就已经问世,目前仍在积极开发中。它有很棒的文档,很棒的API,格式化,试图保持向后兼容,甚至支持本地化字符串。

更改区域设置字符串的链接:https://gist.github.com/1221376

如果您希望只显示两位数的时间,这可能会帮助您:

var now = new Date();
var cHour = now.getHours();
var cMinuts = now.getMinutes();
var cSeconds = now.getSeconds();

var outStr = (cHour <= 0 ? ('0' + cHour) : cHour) + ':' + (cMinuts <= 9 ? ('0' + cMinuts) : cMinuts) + ':' + (cSeconds <= 9 ? '0' + cSeconds : cSeconds);