我有一个日期,格式是2014年5月11日太阳。如何使用JavaScript将其转换为2014-05-11 ?
函数taskDate(dateMilli) {
var d = (new Date(dateMilli) + ")。分割(' ');
D [2] = D [2] + ',';
返回[d[0], d[1], d[2], d[3]]。加入(' ');
}
var datemilli =日期。解析(' 2014年5月11日');
console.log (taskDate (datemilli));
上面的代码给了我相同的日期格式,2014年5月11日。我该如何解决这个问题?
重新格式化日期字符串是相当简单的,例如。
var s = ' 2014年5月11日';
函数reformatDate(s) {
函数z(n){return ('0' + n).slice(-2)}
var月=[‘简’,2月,3月,4月,“可能”,“君”,
7月,8月,9月,10月,11月,12月的];
var b = s.split(/\W+/);
返回b[3] + '-' +
z (months.indexOf (b [1] .substr .toLowerCase (0, 3) ())) + '-' +
z (b [2]);
}
console.log (reformatDate (s));
将日期转换为yyyy-mm-dd格式的最简单方法是这样做:
var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
.toISOString()
.split("T")[0];
工作原理:
new Date("Sun May 11,2014") converts the string "Sun May 11,2014" to a date object that represents the time Sun May 11 2014 00:00:00 in a timezone based on current locale (host system settings)
new Date(date.getTime() - (date.getTimezoneOffset() * 60000 )) converts your date to a date object that corresponds with the time Sun May 11 2014 00:00:00 in UTC (standard time) by subtracting the time zone offset
.toISOString() converts the date object to an ISO 8601 string 2014-05-11T00:00:00.000Z
.split("T") splits the string to array ["2014-05-11", "00:00:00.000Z"]
[0] takes the first element of that array
Demo
var date =新日期(“太阳5月11日”);
var dateString =新日期(日期。
toISOString()。
斯普利特(“T”)[0];
游戏机。log (dateString);
注意:
The first part of the code (new Date(...)) may need to be tweaked a bit if your input format is different from that of the OP. As mikeypie
pointed out in the comments, if the date string is already in the expected output format and the local timezone is west of UTC, then new Date('2022-05-18') results in 2022-05-17. And a user's locale (eg. MM/DD/YYYY vs DD-MM-YYYY) may also impact how a date is parsed by new Date(...). So do some proper testing if you want to use this code for different input formats.