輸出自定義格式的日期

不記得多久之前了,看到過一位大神在論壇的回覆,是一段實現輸出任意格式時間的功能模塊,覺得很不錯的,稍微整理了一下,以一個插件的形式存在,分享一下吧。代碼很簡單:調用zyltimeformat()方法即可,該方法支持兩個參量,具體參量的要求,請查看函數模塊的註釋。

jquery代碼
//jquery輸出任意格式的時間
var zyljq = $.noConflict();

zyljq.fn.extend({
	zyltimeformat:function(time, format){
	//time請按照時間的格式輸入,不支持智能區分時間
	//請確定輸入dddd/dd/dd,其中d爲合法的數字,分隔符可以隨意。
	//不輸入則會按照當前的日期計算結果
	//format請按照下列格式輸入yyyy|mm|dd,字母不能變
	//可以把中間的分隔符變成你想要的分隔符。
		if(time != ""){
			var t = new Date(time);
		}else{
			var t = new Date();
		}
		var tf = function(i){return (i < 10 ? '0' : '') + i};
		return format.replace(/yyyy|mm|dd/g, function(a){
			switch(a){
				case 'yyyy':
					return tf(t.getFullYear());
					break;
				case 'mm':
					return tf(t.getMonth() + 1);
					break;
				case 'dd':
					return tf(t.getDate());
					break;
			}
		});
	}
});

例如

var aa = zyljq().zylformat("2013!11!01",'yyyy-mm-dd');
document.write(aa);         //2013-11-01
aa = zyljq().zylformat("2013!11!01",'yyyy/mm/dd');
document.write(aa);         //2013/11/01

注:修改於2013.12.12

在safari瀏覽器中,new Date(time)中,time的寫法不支持2013!11!01這種格式的輸入,在safari中,time在這個寫法時的分隔符只能是" / ",所以只能以2013/11/01的格式輸入,這樣的話,就顯得過於單一了,所以可以在time有輸入的時候,進行一個簡單的判斷。

if(time != ""){
	//safari下,time必須是以“/”作爲間隔符纔可以。
	//首先對time做處理。
	time = time.replace(/[^\d]+/g,"/");
	var t = new Date(time);
}else{
	var t = new Date();
}

當然,這個判斷只是最簡單把非數字,變成“ / ”處理,並沒有做合法性的驗證,就假設使用者知道輸入格式吧。

這裏只是爲了,注意在safari瀏覽器下的這個兼容問題。


我這裏只寫了計算,並沒有加入時間的計算,如果你需要時間的那塊,那就自己再加一段代碼吧。
如果您發現代碼有問題,或者是某些測試數據出了問題,歡迎您的指正,讓大家共同進步。
發佈了26 篇原創文章 · 獲贊 31 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章