将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
我build议使用这样的东西,像这个https://github.com/brightbits/formatDate-js,而不是试图每一次复制,只是使用一个库,支持所有主要的strftime行动。;
new Date().format("%Y-%m-%d")
一些答案的组合:
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);