2012-06-01 136 views
1

我有一個字符串,它有一個日期,我不能夠將其轉換。格式日期從字符串在javascript

var startDate = "March-09-2010"; 
var convertedStartDate = new Date(startDate); 
var month = convertedStartDate.getMonth() + 1 
var day = convertedStartDate.getDay(); 
var year = convertedStartDate.getFullYear(); 
var shortStartDate = month + "-" + day + "-" + year; 
alert(shortStartDate); 

我想它,所以它轉換月-09-201010年9月3日(DD-MM-YY)

任何人都知道我做錯了嗎?

回答

1

試試這個:

var dt=Date.parse(Yourstring); 

formatDate('DD-MM-YY',dt); 

請檢查該Date.parse

+0

對象函數日期(){[本地代碼]}沒有方法「解析」 ...那是錯誤 –

+0

@RajatSinghal對不起編輯的答案。 – Vinod

+0

1. *對象1268089200000沒有方法'tostring'*。 2.修正後:* toString()基數參數必須介於2和36 *之間。 – KooiInc

0

您的日期字符串是不正確的格式。正確的格式,請參閱https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

試試這個或jsfiddle

var startDate = "March-09-2010"; 
var tmp = startDate.split('-'); 
tmp.splice(1, 0, ','); 
var convertedStartDate = new Date(tmp.join(' ')); 
var month = convertedStartDate.getMonth() + 1 
var day = convertedStartDate.getDate(); 
var year = convertedStartDate.getFullYear(); 
var shortStartDate = ('0' + day).slice(-2) + "-" + ('0' + month).slice(-2) + "-" + year; 
alert(shortStartDate); 
0

檢查你的語法改變你的代碼一點點,根據它,然後修改它---

var startDate = "March/09/2010"; 
var convertedStartDate = new Date(startDate); 
var month = convertedStartDate.getMonth() + 1 
var day = convertedStartDate.getDate(); 
var year = convertedStartDate.getFullYear(); 
var shortStartDate = day+ "-" + month+ "-" + year; 
alert(shortStartDate); 
+0

問題是在startDate不符合標準 – swapnesh

1
var startDate = "March-09-2010"; 
var convertedStartDate = new Date(startDate.replace(/-/g, "/")); // replace hyphen with slash 
var month = convertedStartDate.getMonth() + 1 
var date = convertedStartDate.getDate(); 
var year = convertedStartDate.getFullYear(); 
var shortStartDate = date + "-" + month + "-" + year; 
alert(shortStartDate); 

演示:http://jsfiddle.net/BjnBW/

+0

它不起作用。 「2010年3月9日」仍然不是有效的日期字符串。 「2010年3月9日」是有效的日期字符串。 –

+0

編輯..請檢查現在。 – Diode

+0

這隻適用於英文月份名稱。 – KooiInc

0
var shortStartDate = 
    Globalize.format(Globalize.parseDate(startDate, 'MMMM-dd-yyyy'), 'dd-MM-yy'); 

使用某些庫來進行轉換,因爲內置Date.parse()由實現依賴。它取決於系統區域設置接受的格式。

上面的代碼使用Globalize.js,它可以處理大量的日期格式,包括具有不同語言月份名稱的格式(默認爲英文)。

0

您需要將'March'轉換爲數字。一種方法是使用這個數組擴展到能夠檢索從一個月名稱的月份數:

Array.prototype.enum = function(){ 
    var obj = {}; 
    for (var i=0; i<this.length; (i+=1)) { 
     obj[this[i]] = i; 
    } 
    this.enum = obj; 
    return this; 
}; 

現在,創建月份名稱數組

var months = ('January,February,March,April,May,June,July,'+ 
      'August,September,October,November,December').split(',') 
       .enum(); 

現在你重寫你的約會:

var startDate = "March-09-2010".split(/\-/), 
    month  = months.enum[startDate[0]]+1; 
startDate  = [startDate[1], 
       month < 10 ? '0'+month : month, 
       startDate[2]].join('-'); 
//=> startDate now is: '09-03-2010'