我有一个日期,格式是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 d = new Date("Sun May 1,2014"); var year = d.getFullYear(); var month = d.getMonth() + 1; var day = d.getDate(); month = checkZero(month); day = checkZero(day); var date = ""; date += year; date += "-"; date += month; date += "-"; date += day; document.querySelector("#display").innerHTML = date; function checkZero(i) { if (i < 10) { i = "0" + i }; // add zero in front of numbers < 10 return i; } <div id="display"></div>

其他回答

这很容易由我的date-shortcode包完成:

const dateShortcode = require('date-shortcode')
dateShortcode.parse('{YYYY-MM-DD}', 'Sun May 11,2014')
//=> '2014-05-11'

如果日期需要在所有时区都相同,例如表示数据库中的某个值,那么请确保在JavaScript date对象上使用UTC版本的日、月、年函数,因为这将以UTC时间显示,并避免在某些时区出现差一的错误。

更好的是,使用Moment.js日期库来进行这种格式设置。

const today = new Date(); // or whatever const yearFirstFormater = (date): string => { const modifiedDate = new Date(date).toISOString().slice(0, 10); return `${modifiedDate.split('-')[0]}/${modifiedDate.split('-')[1]}/${modifiedDate.split('-')[2]}`; } const monthFirstFormater = (date): string => { const modifiedDate = new Date(date).toISOString().slice(0, 10); return `${modifiedDate.split('-')[1]}/${modifiedDate.split('-')[2]}/${modifiedDate.split('-')[0]}`; } const dayFirstFormater = (date): string => { const modifiedDate = new Date(date).toISOString().slice(0, 10); return `${modifiedDate.split('-')[2]}/${modifiedDate.split('-')[1]}/${modifiedDate.split('-')[0]}`; } console.log(yearFirstFormater(today)); console.log(monthFirstFormater(today)); console.log(dayFirstFormater(today));

new Date(new Date(YOUR_DATE.toISOString()).getTime() - 
                 (YOUR_DATE.getTimezoneOffset() * 60 * 1000)).toISOString().substr(0, 10)

如果你使用momentjs,现在它们包含了一个YYYY-MM-DD格式的常量:

date.format(moment.HTML5_FMT.DATE)