IVR*_*ger 366 javascript date
我正在尝试使用JS将格式date object
转换为字符串YYYYMMDD
.难道还有比串联更简单的方法Date.getYear()
,Date.getMonth()
和Date.getDay()
?
o-o*_*o-o 594
改变了我经常使用的代码段:
Date.prototype.yyyymmdd = function() {
var mm = this.getMonth() + 1; // getMonth() is zero-based
var dd = this.getDate();
return [this.getFullYear(),
(mm>9 ? '' : '0') + mm,
(dd>9 ? '' : '0') + dd
].join('');
};
var date = new Date();
date.yyyymmdd();
Run Code Online (Sandbox Code Playgroud)
Pie*_*ert 297
我不喜欢加入原型.另一种选择是:
var rightNow = new Date();
var res = rightNow.toISOString().slice(0,10).replace(/-/g,"");
<!-- Next line is for code snippet output only -->
document.body.innerHTML += res;
Run Code Online (Sandbox Code Playgroud)
小智 167
您可以使用toISOString函数:
var today = new Date();
today.toISOString().substring(0, 10);
Run Code Online (Sandbox Code Playgroud)
它会给你一个"yyyy-mm-dd"格式.
H6.*_*H6. 121
var date = new Date();
var formattedDate = moment(date).format('YYYYMMDD');
Run Code Online (Sandbox Code Playgroud)
NLe*_*may 36
如果您不需要纯JS解决方案,可以使用jQuery UI来完成这样的工作:
$.datepicker.formatDate('yymmdd', new Date());
Run Code Online (Sandbox Code Playgroud)
我通常不喜欢导入太多的库.但是jQuery UI非常有用,你可能会在项目的其他地方使用它.
有关更多示例,请访问http://api.jqueryui.com/datepicker/
Bri*_*ell 35
这是一行代码,您可以使用它来创建YYYY-MM-DD
今天日期的字符串.
var d = new Date().toISOString().slice(0,10);
Run Code Online (Sandbox Code Playgroud)
Eri*_*itz 23
除了oo的答案之外,我还建议将逻辑运算与返回分开,并将它们作为三元组放在变量中.
此外,用于concat()
确保变量的安全连接
Date.prototype.yyyymmdd = function() {
var yyyy = this.getFullYear();
var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
var dd = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
return "".concat(yyyy).concat(mm).concat(dd);
};
Date.prototype.yyyymmddhhmm = function() {
var yyyymmdd = this.yyyymmdd();
var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
return "".concat(yyyymmdd).concat(hh).concat(min);
};
Date.prototype.yyyymmddhhmmss = function() {
var yyyymmddhhmm = this.yyyymmddhhmm();
var ss = this.getSeconds() < 10 ? "0" + this.getSeconds() : this.getSeconds();
return "".concat(yyyymmddhhmm).concat(ss);
};
var d = new Date();
document.getElementById("a").innerHTML = d.yyyymmdd();
document.getElementById("b").innerHTML = d.yyyymmddhhmm();
document.getElementById("c").innerHTML = d.yyyymmddhhmmss();
Run Code Online (Sandbox Code Playgroud)
RiZKiT建议的更多干小提琴
https://jsfiddle.net/EricHerlitz/tuhhfxz9/
gon*_*gqj 22
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'
Run Code Online (Sandbox Code Playgroud)
alf*_*edo 18
当地时间:
var date = new Date();
date = date.toJSON().slice(0, 10);
Run Code Online (Sandbox Code Playgroud)
UTC时间:
var date = new Date().toISOString();
date = date.substring(0, 10);
Run Code Online (Sandbox Code Playgroud)
在我写这篇文章时,日期将在今天打印 2020-06-15。
toISOString() 方法返回符合 ISO 标准的日期 YYYY-MM-DDTHH:mm:ss.sssZ
该代码采用 YYYY-MM-DD 格式所需的前 10 个字符。
如果您想要没有“-”的格式,请使用:
var date = new Date();
date = date.toJSON().slice(0, 10).split`-`.join``;
Run Code Online (Sandbox Code Playgroud)
在 .join`` 中,您可以添加空格、点或任何您想要的内容。
Dar*_*ith 16
我不喜欢修改本机对象,我认为乘法比填充接受的解决方案的字符串更清晰.
function yyyymmdd(dateIn) {
var yyyy = dateIn.getFullYear();
var mm = dateIn.getMonth() + 1; // getMonth() is zero-based
var dd = dateIn.getDate();
return String(10000 * yyyy + 100 * mm + dd); // Leading zeros for mm and dd
}
var today = new Date();
console.log(yyyymmdd(today));
Run Code Online (Sandbox Code Playgroud)
小提琴:http://jsfiddle.net/gbdarren/Ew7Y4/
Dor*_*use 15
Plain JS(ES5)解决方案没有任何可能的日期跳转问题由Date.toISOString()以UTC格式打印引起:
var now = new Date();
var todayUTC = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));
return todayUTC.toISOString().slice(0, 10).replace(/-/g, '');
Run Code Online (Sandbox Code Playgroud)
这是对@weberste对@Pierre Guilbert答案的评论的回应.
Kus*_*Kus 10
// UTC/GMT 0
document.write('UTC/GMT 0: ' + (new Date()).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812013509
// Client local time
document.write('<br/>Local time: ' + (new Date(Date.now()-(new Date()).getTimezoneOffset() * 60000)).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812113509
Run Code Online (Sandbox Code Playgroud)
小智 8
var someDate = new Date();
var dateFormated = someDate.toISOString().substr(0,10);
console.log(dateFormated);
Run Code Online (Sandbox Code Playgroud)
接受的答案有一点变化:
function getDate_yyyymmdd() {
const date = new Date();
const yyyy = date.getFullYear();
const mm = String(date.getMonth() + 1).padStart(2,'0');
const dd = String(date.getDate()).padStart(2,'0');
return `${yyyy}${mm}${dd}`
}
console.log(getDate_yyyymmdd())
Run Code Online (Sandbox Code Playgroud)
dateformat是一个非常常用的包。
如何使用:
dateformat
从 NPM下载并安装。在你的模块中需要它:
const dateFormat = require('dateformat');
然后格式化你的东西:
const myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');
另一种方法是使用toLocaleDateString
具有大端日期格式标准的语言环境,例如瑞典,立陶宛,匈牙利,韩国,......:
date.toLocaleDateString('se')
Run Code Online (Sandbox Code Playgroud)
要删除分隔符(-
)只需要替换非数字:
console.log( new Date().toLocaleDateString('se').replace(/\D/g, '') );
Run Code Online (Sandbox Code Playgroud)
这没有您可以通过UTC日期格式获得的潜在错误:与当地时区中的日期相比,UTC日期可能是一天假.
根据 @oo 的答案,这将根据格式字符串返回日期字符串。如果需要,您可以轻松添加 2 位数字的年份正则表达式来表示年份和毫秒等。
Date.prototype.getFromFormat = function(format) {
var yyyy = this.getFullYear().toString();
format = format.replace(/yyyy/g, yyyy)
var mm = (this.getMonth()+1).toString();
format = format.replace(/mm/g, (mm[1]?mm:"0"+mm[0]));
var dd = this.getDate().toString();
format = format.replace(/dd/g, (dd[1]?dd:"0"+dd[0]));
var hh = this.getHours().toString();
format = format.replace(/hh/g, (hh[1]?hh:"0"+hh[0]));
var ii = this.getMinutes().toString();
format = format.replace(/ii/g, (ii[1]?ii:"0"+ii[0]));
var ss = this.getSeconds().toString();
format = format.replace(/ss/g, (ss[1]?ss:"0"+ss[0]));
return format;
};
d = new Date();
var date = d.getFromFormat('yyyy-mm-dd hh:ii:ss');
alert(date);
Run Code Online (Sandbox Code Playgroud)
然而,我不知道它的效率如何,尤其是性能方面,因为它使用了大量的正则表达式。它可能会使用一些我不掌握纯js的工作。
注意:我保留了预定义的类定义,但您可能想根据最佳实践将其放入函数或自定义类中。
您只需使用此一行代码即可获得年份中的日期
var date = new Date().getFullYear() + "-" + (parseInt(new Date().getMonth()) + 1) + "-" + new Date().getDate();
Run Code Online (Sandbox Code Playgroud)
这里的人 => http://blog.stevenlevithan.com/archives/date-time-formatformat()
为 Javascript 的Date
对象编写了一个函数,因此它可以与熟悉的文字格式一起使用。
如果您需要应用程序的 Javascript 中的全功能日期格式,请使用它。否则,如果您想要一次性完成,那么连接 getYear()、getMonth()、getDay() 可能是最简单的。
这个帖子中最受欢迎的答案有点简化版本/sf/answers/214752751/:
function toYYYYMMDD(d) {
var yyyy = d.getFullYear().toString();
var mm = (d.getMonth() + 101).toString().slice(-2);
var dd = (d.getDate() + 100).toString().slice(-2);
return yyyy + mm + dd;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这段代码修复了Pierre Guilbert的答案:
(即使在10000年后也能正常工作)
YYYYMMDD=new Date().toISOString().slice(0,new Date().toISOString().indexOf("T")).replace(/-/g,"")
Run Code Online (Sandbox Code Playgroud)
小智 5
使用padStart:
Date.prototype.yyyymmdd = function() {
return [
this.getFullYear(),
(this.getMonth()+1).toString().padStart(2, '0'), // getMonth() is zero-based
this.getDate().toString().padStart(2, '0')
].join('-');
};
Run Code Online (Sandbox Code Playgroud)
[day,,month,,year]= Intl.DateTimeFormat(undefined, { year: 'numeric', month: '2-digit', day: '2-digit' }).formatToParts(new Date()),year.value+month.value+day.value
Run Code Online (Sandbox Code Playgroud)
或者
new Date().toJSON().slice(0,10).replace(/\/|-/g,'')
Run Code Online (Sandbox Code Playgroud)
.toJSON().slice(0,10).split`-`.join``;
Run Code Online (Sandbox Code Playgroud)
.toJSON().slice(0,10).split`-`.join``;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
899796 次 |
最近记录: |