我试图使用JS将日期对象转换为YYYYMMDD格式的字符串。有没有比连接Date.getYear(), Date.getMonth()和Date.getDay()更简单的方法?
当前回答
下面是一种更通用的方法,它允许日期和时间组件,并且可以作为数字或字符串进行相同的排序。
根据“Date ISO format”中的数字顺序,转换为本地时区,去掉非数字。例如:
// monkey patch version
Date.prototype.IsoNum = function (n) {
var tzoffset = this.getTimezoneOffset() * 60000; //offset in milliseconds
var localISOTime = (new Date(this - tzoffset)).toISOString().slice(0,-1);
return localISOTime.replace(/[-T:\.Z]/g, '').substring(0,n || 20); // YYYYMMDD
}
使用
var d = new Date();
// Tue Jul 28 2015 15:02:53 GMT+0200 (W. Europe Daylight Time)
console.log(d.IsoNum(8)); // "20150728"
console.log(d.IsoNum(12)); // "201507281502"
console.log(d.IsoNum()); // "20150728150253272"
其他回答
这篇文章帮助我写了这个助手,所以我分享它以防有人 正在寻找这个解决方案,它支持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这样的字符串
Dateformat是一个非常常用的包。
使用方法:
从NPM下载并安装dateformat。在你的模块中需要它:
以格式
然后格式化你的东西:
const myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');
以下是对https://stackoverflow.com/users/318563/o-o的回答的一点改进
Date.prototype.ddmmyyyy = function(delimiter) {
var yyyy = this.getFullYear().toString();
var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
var dd = this.getDate().toString();
return (dd[1]?dd:"0"+dd[0]) + delimiter + (mm[1]?mm:"0"+mm[0]) + delimiter +yyyy ; // padding
};
希望对大家有所帮助!
:)
这里有一个简洁的小函数,易于阅读,并避免了局部变量,这在JavaScript中可能是时间消耗。我不使用原型来修改标准模块,因为它会污染名称空间,并可能导致代码不能执行您认为应该执行的操作。
main函数有一个愚蠢的名字,但它传达了思想。
function dateToYYYYMMDDhhmmss(date) {
function pad(num) {
num = num + '';
return num.length < 2 ? '0' + num : num;
}
return date.getFullYear() + '/' +
pad(date.getMonth() + 1) + '/' +
pad(date.getDate()) + ' ' +
pad(date.getHours()) + ':' +
pad(date.getMinutes()) + ':' +
pad(date.getSeconds());
}