2012-03-07 83 views
1

如何格式化日期我拿起從一個文本框這個日期,我想格式化這個格式:YYYY-MM-DD 所以從DD/MM/YYYY,以YYYY-MM-DD在JavaScript

var startDate = document.getElementById('ctl00_PlaceHolderMain_ctl00_Date').value; 
    var s = new Date(startDate); 
    alert(startDate); //which prints out 7/03/2012 
    //when i use the below to try and format it to : yyyy-MM-dd which is what i want 
    var scurr_date = s.getDate(); 
    var scurr_month = s.getMonth(); 
    scurr_month++; 
    var scurr_year = s.getFullYear(); 

出於某種原因,我得到:

var fstartdate = scurr_year + "-" + scurr_month + "-" + scurr_date; 
//Output:2012-7-3 
instead of : 2012-3-7 
also fi i pick a date like 31/12/2011 
i get : 2013-7-12 

任何想法如果我使用美國像03/07/2012它種操作系統的工作原理確定什麼做,我樣的通知。 預先感謝

+0

Java和JavaScript是完全不同的語言,所以我糾正了標籤相匹配的問題。 – 2012-03-07 05:17:44

+0

我個人使用這個庫:http://blog.stevenlevithan.com/archives/date-time-format – aroth 2012-03-07 05:55:40

回答

0

您說過要將「dd/MM/yyyy」轉換爲「yyyy-MM-dd」。 JavaScript的Date構造函數將始終將前兩位數字作爲一個月份。

一些正則表達式可以幫助你在這裏:

function fix_date (str) { 
    var re = /(\d{1,2})\/(\d{1,2})\/(\d{4})/; 
    str = str.replace(re, function (p1, p2, p3, p4) { 
     return p4 + '/' + p3 + '/' + p2;   
    }); 

    return str; 
} 

var start_date = '7/03/2012'; 
var new_date = fix_date(start_date); 

console.log(new_date); // 2012/03/7​ 
+0

謝謝guys.I猜我的問題是日曆,如果我使用lcid 3081這是澳大利亞。日期獲取所有混合。 如果我使用lcid:1033這是美國的一切都好。 Thants爲什麼,如果我選擇一個日期爲去年一樣 31/12/2011我得到的輸出2013年7月12日:( 的GETDATE,得到月等不選擇正確的日期,月份等時LCID是3081 如何解決這個問題 – naijacoder 2012-03-07 06:23:35

+0

@ kai- * JavaScript的Date構造函數將始終將前兩位數字作爲一個月* - 不一定是這樣。根據[ES5中的日期解析算法](http://es5.github.com/#x15。 9.4.2),它會首先嚐試將其解析爲ISO8601日期(某些瀏覽器無法正確執行),如果失敗,字符串解析的方式取決於依賴性,如果您希望在合理的範圍內正確完成,瀏覽器的方式,你必須打破它,並自己解析它 – RobG 2012-03-07 06:36:18

+0

感謝羅布我不知道,我一直在浪費我的時間 我已經決定使用凱的解決方案,它的工作就像一個魅力 Tha Kai – naijacoder 2012-03-07 06:44:27

0

http://www.webdevelopersnotes.com/tips/html/10_ways_to_format_time_and_date_using_javascript.php3

http://www.elated.com/articles/working-with-dates/

基本上,你有3種方法,你必須琴絃爲自己結合:

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> 

檢查這個答案link