javascript - JavaScript格式化某個日期?

  显示原文与译文双语对照的内容

我注意到 new Date()的javascript函數在接受幾種格式的日期時非常聰明。


Xmas95 = new Date("25 Dec, 1995 23:15:00")
Xmas95 = new Date("2009 06 12,12:52:39")
Xmas95 = new Date("20 09 2006,12:52:39")

在調用 new Date() 函數時,我找不到任何顯示所有有效字元串格式的文檔。

這用於將字元串轉換為日期。 如果我們看看相反的一面,就是將日期對象轉換成字元串,直到現在我感覺JavaScript沒有內置的API來格式化日期對象到字元串。

編輯器:注。下面的方法是嘗試直接asker該在從事一個特定的瀏覽器,但並不 一般工作;看到答案在本頁,看看一些實際的解決方案。

今天,我在date日期對象on上使用了 toString() 方法,令人驚訝的是,它是將日期格式化為字元串。


var d1 = new Date();
d1.toString('yyyy-MM-dd');//Returns"2009-06-29" in Internet Explorer, but not Firefox or Chrome
d1.toString('dddd, MMMM, yyyy')//Returns"Monday, June 29,2009" in Internet Explorer, but not Firefox or Chrome

在這裡我找不到任何關於將日期對象格式化為字元串的方法。

列出 Date() 對象支持的格式說明符的文檔?

时间:

使用日期, 我愛 10進行格式設置的方法時間和日期使用 JavaScript工作后。

基本上,你有三種方法,你必須為自己組合字元串:


getDate()//Returns the date
getMonth()//Returns the month
getFullYear()//Returns the year

例如:


<script type="text/javascript">
 var d = new Date();
 var curr_date = d.getDate();
 var curr_month = d.getMonth() + 1;//Months are zero based
 var curr_year = d.getFullYear();
 document.write(curr_date +"-" + curr_month +"-" + curr_year);
</script>

Moment.js

它是一個用於解析,操作和格式化日期的( 輕量) * JavaScript日期庫。


var a = moment([2010, 1, 14, 15, 25, 50, 125]);
a.format("dddd, MMMM Do YYYY, h:mm:ss a");//"Sunday, February 14th 2010, 3:25:50 pm"
a.format("ddd, hA");//"Sun, 3PM"

( * )的輕量級含義 9.3 KB縮小+ 在最小可能的設置( 2014 )

如果你已經在項目中使用了 jQuery UI,則可以使用內置的datepicker方法格式化日期對象:


$.datepicker.formatDate('yy-mm-dd', new Date(2007, 1 - 1, 26));

但是,datepicker只格式化日期,不能格式化時間。

查看 jQuery UI datepicker formatDate,示例。

列出 Date() 對象支持的格式說明符的文檔?

我今天無意中發現了這一點,很驚訝沒有人花時間回答這個簡單問題。 確,有很多庫可以幫助處理日期操作。 有些比其他的好一些。 但問題不是這個問題。

) 就我所知,純JavaScript不支持格式說明符 你已經指明你希望使用它們的方式。 但是它支持格式化日期和/或者時間的方法,比如 .toLocaleDateString().toLocaleTimeString().toUTCString()

我最常使用的Date 對象引用位於 w3schools.com 網站 ( 但是一個快速搜索會顯示更多更符合你需求的) 。

還具有自定義methods,請注意,對象屬性 日期部分,它提供了指向 prototype,它描述了某些方面可以擴展的日期 object. 多年來,JavaScript社區中有一些關於的爭論,關於這是否是最佳實踐,我不提倡或者反對它,只是指出它的存在。


function dateToYMD(date) {
 var d = date.getDate();
 var m = date.getMonth() + 1;
 var y = date.getFullYear();
 return '' + y + '-' + (m<=9? '0' + m : m) + '-' + (d <= 9? '0' + d : d);
}

在處理JavaScript中的日期時確保簽出 Datejs 。 以防 toString函數,它是相當令人印象深刻的和並且有充足的文檔可以看看。

編輯: Tyler Forsythe指出,datejs已經過時。 我在當前的項目中使用了它,但沒有任何問題,但是你應該注意並考慮其他問題。

你可以只展開 Date 對象用新 format 方法如前所通過 meizz,下面是本文作者所的代碼。 這是一個 jsfiddle


Date.prototype.format = function(format)//author: meizz
{
 var o = {
"M+" : this.getMonth()+1,//month
"d+" : this.getDate(),//day
"h+" : this.getHours(),//hour
"m+" : this.getMinutes(),//minute
"s+" : this.getSeconds(),//second
"q+" : Math.floor((this.getMonth()+3)/3),//quarter
"S" : this.getMilliseconds()//millisecond
 }

 if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
 (this.getFullYear()+"").substr(4 - RegExp.$1.length));
 for(var k in o)if(new RegExp("("+ k +")").test(format))
 format = format.replace(RegExp.$1,
 RegExp.$1.length==1? o[k] :
 ("00"+ o[k]).substr((""+ o[k]).length));
 return format;
}

alert(new Date().format("yyyy-MM-dd"));
alert(new Date("january 12 2008 11:12:30").format("yyyy-MM-dd h:mm:ss"));

你所提到的功能不是標準的Javascript,不可能是跨瀏覽器移植的,因此不是好的實踐。 ECMAScript 3規範 web 將解析和輸出格式保留為Javascript實現。 ECMAScript 5 添加ISO8601支持的子集。 我相信你提到的toString() 函數是一個瀏覽器的創新( Mozilla)?

一些庫提供了參數化常式,有些庫具有廣泛的本地化支持。 你還可以查看 dojo.date.locale 中的方法。

...