covert date string to dd/mm/yy in javascript
我想转换
1 | Tue Jul 12 2016 00:00:00 GMT+0100 (BST) |
成
1 | 12/07/2016 |
说我有d = 2016年7月12日星期二00:00:00 GMT + 0100(BST)。 我试过了
1 | var a = d.getDate()+"/"+(d.getMonth()+1)+"/"+d.getFullYear(); |
但后来我得到12/7/2016而不是2016年7月12日
我可以
1 2 | if(d.getMonth()<10){ var a = d.getDate()+"/0"+(d.getMonth()+1)+"/"+d.getFullYear(); |
但是我不喜欢这个,而且当这一天小于10时我会遇到同样的问题。什么是达到我想要的格式的最好方法。 我只需将它作为一个字符串在视图中显示。
那这个呢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var month = 7; // july (months are base 0) var day = 12; var year = 2016; var d = new Date(year,month-1,day); var a = pad(d.getDate(),2)+"/"+pad(d.getMonth()+1,2)+"/"+d.getFullYear(); console.log(a) function pad(num, size) { var s = num+""; while (s.length < size) s ="0" + s; return s; } |
使用如何在JavaScript中输出带前导零的整数的填充函数
您可能还想查看http://momentjs.com/以"在JavaScript中解析,验证,操作和显示日期"。
这是另一个填充函数(我已经使用了很多)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | var month = 7; // july (months are base 0) var day = 12; var year = 2016; var d = new Date(year,month-1,day); var a = pad(d.getDate(),2)+"/"+pad(d.getMonth()+1,2)+"/"+d.getFullYear(); console.log(a) /** * Returns a zero-padded string of length characters * When the number is more than the length, the number is returned * in its full length (longer than the specified length) * @param {Number} number The number to be padded * @param {Number=2} length * @returns {String} the padded String or the number if longer than specified length */ function pad(number, length) { if (length === undefined) { length = 2; } var missing = length - digits(number); if (missing < 0) return number.toString(); return Array(missing + 1).join("0") + number.toString(); } /** * Utility function to return the number of digits of a number * @param {Number} int the number for which to get the #digits * @returns {Number} the number of digits */ function digits(int) { return Math.floor(Math.log(int) / Math.LN10 + 1); } |
诀窍是添加一个条件来检查一天或一个月是否小于10,如果是这样,添加一个0。下面这个方法是它的简写版本,但它的工作原理。 当然,我有一些额外的东西,比如yyyy,mm和dd的定义,只是为了让事情的来源更加清晰。 但是
1 2 3 4 5 6 7 8 | 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 (mm[1]?mm:"0"+mm[0]) +"/" + (dd[1]?dd:"0"+dd[0]) +"/" + yyyy; // padding }; d = new Date(); document.getElementById("date").innerHTML = d.yyyymmdd(); |
1 | <span id="date"></span> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | var date = new Date(); var dateFormat = getFormatDate(date); var dateOneLiner = getFormattedDateOneLiner(date); console.log("DateFormat", dateFormat); console.log("OneLiner", dateOneLiner); function getFormatDate(pDate) { var day = pDate.getDate(); var month = pDate.getMonth() + 1; var year = pDate.getFullYear(); if(month < 10) month ="0" + month; if(day < 10) day ="0" + day; return day +"/" + month +"/" + year; } function getFormattedDateOneLiner(pDate) { return (pDate.getDate() < 10 ?"0" + pDate.getDate() : pDate.getDate()) +"/" + ((pDate.getMonth() + 1) < 10 ?"0" + (pDate.getMonth() + 1) : (pDate.getMonth() + 1)) +"/" + pDate.getFullYear(); } |
有很多方法可以做到这一点。 这里有两个可能的单行:
1 2 3 | var a = ("0"+d.getDate()).slice(-2)+"/"+("0"+(d.getMonth()+1)).slice(-2)+"/"+d.getFullYear(); var a = ("0"+d.getDate()+"/0"+(d.getMonth()+1)).replace(/\d(\d\d)/g, '$1')+"/"+d.getFullYear(); |
你可以这样一行:
1 2 3 | var a = (d.getDate() < 10?"0"+d.getDate():d.getDate()) +"/"+ (d.getMonth()+1 <10? ("0"+d.getMonth()+1):d.getMonth()+1 ) +"/"+d.getFullYear(); |