将JavaScriptdate格式设置为yyyy-mm-dd

大家好我有一个date格式太阳5月11,2014如何将它转换为2014-05-11在JavaScript中。

function taskDate(dateMilli) { var d = (new Date(dateMilli) + '').split(' '); d[2] = d[2] + ','; return [d[0], d[1], d[2], d[3]].join(' '); } var datemilli = Date.parse('Sun May 11,2014'); taskdate(datemilli); 

上面的代码给我相同的date格式太阳可能11,2014请帮助

你可以做

 function formatDate(date) { var d = new Date(date), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear(); if (month.length < 2) month = '0' + month; if (day.length < 2) day = '0' + day; return [year, month, day].join('-'); } 

用法示例:

 alert(formatDate('Sun May 11,2014')); 

输出:

 2014-05-11 

演奏小提琴: http : //jsfiddle.net/abdulrauf6182012/2Frm3/

只需使用内置的toISOString方法,即可将date转换为ISO 8601格式。

 yourDate.toISOString().split('T')[0] 

yourDate是你的date对象。

我用这种方式获取格式为yyyy-mm-dd的date:)

 var todayDate = new Date().toISOString().slice(0,10); 
 format = function date2str(x, y) { var z = { M: x.getMonth() + 1, d: x.getDate(), h: x.getHours(), m: x.getMinutes(), s: x.getSeconds() }; y = y.replace(/(M+|d+|h+|m+|s+)/g, function(v) { return ((v.length > 1 ? "0" : "") + eval('z.' + v.slice(-1))).slice(-2) }); return y.replace(/(y+)/g, function(v) { return x.getFullYear().toString().slice(-v.length) }); } 

结果:

 format(new Date('Sun May 11,2014'), 'yyyy-MM-dd') "2014-05-11 

一些答案的组合:

 var d = new Date(date); date = [ d.getFullYear(), ('0' + (d.getMonth() + 1)).slice(-2), ('0' + d.getDate()).slice(-2) ].join('-'); 

为什么不简单地使用这个

 var date = new Date('1970-01-01'); //or your date here console.log((date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear()); 

简单而甜美;)

toISOString()假定你的date是本地时间,并将其转换为UTC。 你会得到不正确的datestring。

下面的方法应该返回你所需要的。

 Date.prototype.yyyymmdd = function() { var yyyy = this.getFullYear().toString(); var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based var dd = this.getDate().toString(); return yyyy + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]); }; 

资料来源: https : //blog.justin.kelly.org.au/simple-javascript-function-to-format-the-date-as-yyyy-mm-dd/

这是一个办法:

 var date = Date.parse('Sun May 11,2014'); function format(date) { date = new Date(date); var day = ('0' + date.getDate()).slice(-2); var month = ('0' + (date.getMonth() + 1)).slice(-2); var year = date.getFullYear(); return year + '-' + month + '-' + day; } console.log(format(date)); 

如果date需要在所有时区相同,例如表示数据库中的某个值,那么一定要使用utf版本的date,月份,date对象的全部函数,因为这将在utc时间显示,并避免1错误一定的时区。 甚至更好的使用这种格式的时间库

你可以试试这个: timeSolver.js

 var date = new Date(); var dateString = timeSolver.getString(date, "YYYY-MM-DD"); 

您可以使用此方法获取datestring:

的getString

希望这会帮助你!

 function myYmd(D){ var pad = function(num) { var s = '0' + num; return s.substr(s.length - 2); } var Result = D.getFullYear() + '-' + pad((D.getMonth() + 1)) + '-' + pad(D.getDate()); return Result; } var datemilli = new Date('Sun May 11,2014'); document.write(myYmd(datemilli)); 

重新格式化一个datestring是相当直接的,例如

 var s = 'Sun May 11,2014'; function reformatDate(s) { function z(n){return ('0' + n).slice(-2)} var months = [,'jan','feb','mar','apr','may','jun', 'jul','aug','sep','oct','nov','dec']; var b = s.split(/\W+/); return b[3] + '-' + z(months.indexOf(b[1].substr(0,3).toLowerCase())) + '-' + z(b[2]); } console.log(reformatDate(s)); 

答案的另一个组合。 很好的可读性,但有点冗长。

 function getCurrentDayTimestamp() { const d = new Date(); return new Date( Date.UTC( d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds() ) // `toIsoString` returns something like "2017-08-22T08:32:32.847Z" // and we want the first part ("2017-08-22") ).toISOString().slice(0, 10); } 

这些答案都没有让我满意。 我想要一个跨平台的解决scheme,不用任何外部库就能在当地时区给我提供一天的时间。

这就是我想到的:

 function localDay(time) { var minutesOffset = time.getTimezoneOffset() var millisecondsOffset = minutesOffset*60*1000 var local = new Date(time - millisecondsOffset) return local.toISOString().substr(0, 10) } 

这应该返回date的date,以YYYY-MM-DD格式在date引用的时区中。

因此,例如localDay(new Date("2017-08-24T03:29:22.099Z"))将返回"2017-08-23"即使它已经是UTC的24日。

您将需要填充Date.prototype.toISOString为它在IE8中工作,但它应该支持其他地方。

我修改了Samit Satpute的回答如下:

 var newstartDate = new Date(); // newstartDate.setDate(newstartDate.getDate() - 1); var startDate = newstartDate.toISOString().replace(/[-T:\.Z]/g, ""); //.slice(0, 10); // To get the Yesterday's Date in YYYY MM DD Format console.log(startDate); 

Date.js对此很有帮助。

 require("datejs") (new Date()).toString("yyyy-MM-dd") 

所有给出的答案是伟大的,帮助我很大。 在我的情况下,我想以yyyy mm dd格式和date-1一起获取当前date。 这是为我工作。

 var endDate = new Date().toISOString().slice(0, 10); // To get the Current Date in YYYY MM DD Format var newstartDate = new Date(); newstartDate.setDate(newstartDate.getDate() - 1); var startDate = newstartDate.toISOString().slice(0, 10); // To get the Yesterday's Date in YYYY MM DD Format alert(startDate); 
 function formatDate(date) { var year = date.getFullYear().toString(); var month = (date.getMonth() + 101).toString().substring(1); var day = (date.getDate() + 100).toString().substring(1); return year + "-" + month + "-" + day; } alert(formatDate(new Date())); 

这对我有用,如果需要testing,可以直接粘贴到你的HTML中:

 <script type="text/javascript"> if (datefield.type!="date"){ //if browser doesn't support input type="date", initialize date picker widget: jQuery(function($){ //on document.ready $('#Date').datepicker({ dateFormat: 'yy-mm-dd', // THIS IS THE IMPORTANT PART!!! showOtherMonths: true, selectOtherMonths: true, changeMonth: true, minDate: '2016-10-19', maxDate: '2016-11-03' }); }) } </script> 

就像这个一样使用YYYY MM DD像(2017-03-12)

var todayDate = new Date()。slice(0,10);