我试图使用JS将日期对象转换为YYYYMMDD格式的字符串。有没有比连接Date.getYear(), Date.getMonth()和Date.getDay()更简单的方法?
当前回答
原生Javascript:
new Date().toLocaleString('zu-ZA').slice(0,10).replace(/-/g,'');
其他回答
这篇文章帮助我写了这个助手,所以我分享它以防有人 正在寻找这个解决方案,它支持yyyy, mm, dd的所有变化
Date.prototype.formattedDate = function (pattern) {
formattedDate = pattern.replace('yyyy', this.getFullYear().toString());
var mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based
mm = mm.length > 1 ? mm : '0' + mm;
formattedDate = formattedDate.replace('mm', mm);
var dd = this.getDate().toString();
dd = dd.length > 1 ? dd : '0' + dd;
formattedDate = formattedDate.replace('dd', dd);
return formattedDate;
};
d = new Date();
pattern = 'yyyymmdd'; // 20150813
d.formattedDate(pattern);
pattern = 'yyyy-mm-dd';
d.formattedDate(pattern); // 2015-08-13
var dateDisplay = new Date( 2016-11-09 05:27:00 UTC );
dateDisplay = dateDisplay.toString()
var arr = (dateDisplay.split(' '))
var date_String = arr[0]+','+arr[1]+' '+arr[2]+' '+arr[3]+','+arr[4]
这将显示像Wed,Nov 09 2016,10:57:00这样的字符串
当我需要这样做时,我通常使用下面的代码。
var date = new Date($.now());
var dateString = (date.getFullYear() + '-'
+ ('0' + (date.getMonth() + 1)).slice(-2)
+ '-' + ('0' + (date.getDate())).slice(-2));
console.log(dateString); //Will print "2015-09-18" when this comment was written
为了解释,.slice(-2)给出了字符串的最后两个字符。
所以无论如何,我们都可以在日期或月份后加上“0”,只要求最后两个,因为这两个总是我们想要的。
所以如果MyDate.getMonth()返回9,它将是:
("0" + "9") // Giving us "09"
加上。slice(-2)就得到了最后两个字符:
("0" + "9").slice(-2)
"09"
但是如果date.getMonth()返回10,它将是:
("0" + "10") // Giving us "010"
所以加上.slice(-2)会得到最后两个字符,或者:
("0" + "10").slice(-2)
"10"
似乎mootools提供了Date().format(): https://mootools.net/more/docs/1.6.0/Types/Date
但我不确定是否值得只针对这个特定的任务。
new Date('Jun 5 2016').
toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).
replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');
// => '2016-06-05'