2011-06-21 69 views
11

我爲我工作的公司繼承了一個項目。他們的日期記錄爲以下格式:添加一天到Javascript日期+獨特的格式?

2011年3月18日將列爲「2011年3月18日」。

2010年4月31日將列爲「2010年4月31日」。

我該如何使用Javascript來添加一天到以上述方式格式化的日期,然後再重新轉換回相同的格式?

我想創建一個函數,在「2011年3月18日」添加一天並返回「2011年3月19日」。或者在2011年6月30日前增加1天,並返回「2011年7月1日」。

任何人都可以幫我嗎?

回答

22

首先沒有四月31日)

要實際問題,Date對象可以理解,當作爲參數傳遞當前格式..

var dateString = '30 Apr 2010'; // date string 
var actualDate = new Date(dateString); // convert to actual date 
var newDate = new Date(actualDate.getFullYear(), actualDate.getMonth(), actualDate.getDate()+1); // create new increased date 

// now extract the bits we want to crete the text version of the new date.. 
var newDateString = ('0'+newDate.getDate()).substr(-2) + ' ' + newDate.toDateString().substr(4,3) + ' ' + newDate.getFullYear(); 

alert(newDateString); 

演示在http://jsfiddle.net/gaby/jGwYY/1/


相同的提取使用(越好支持)代替slicesubstr

// now extract the bits we want to crete the text version of the new date.. 
var newDateString = ('0'+newDate.getDate()).slice(-2) + ' ' + newDate.toDateString().slice(4,7) + ' ' + newDate.getFullYear(); 

演示在http://jsfiddle.net/jGwYY/259/

+0

完美的感謝!欣賞它,我需要更舒適的日期APi我猜。 – Walker

+1

值得一提的是,月份被索引爲0.因此'Apr'對應於'3'。 – Jeroen

+0

+1「沒有4月31日;)」:) –

1

您希望將日期字符串轉換爲Date對象,將一天添加到對象,然後再轉換回來。請以Date的API文檔爲出發點。

0

大多數(所有?)瀏覽器就能一旦你有一個Date對象,你可以添加一個白天和輸出使用類似underscore.date格式化的日期字符串解析日期字符串用一個簡單的

var parsedDate = new Date(dateString); 

如果您發現某些瀏覽器無法解析日期格式,那麼您可以編寫一個非常簡單的正則表達式,將日期字符串拆分爲其組成部分,然後手動構建Date實例。

此外,我強烈建議在單獨的函數中進行解析,並嘗試儘可能地保留日期表示中的日期。儘快將字符串解析爲日期,然後儘可能晚地將其格式化爲字符串。