2014-01-17 103 views
0

我從API結果中獲取此日期/時間值"20131218"Javascript轉換日期

我想要做的就是將這個日期轉換成類似"2013-12-18"的東西。我知道這是在PHP中很容易通過簡單地做這樣的代碼:

echo date("Y-m-d",strtotime('20131218')); 

輸出:2013-12-18

這是我在JavaScript嘗試:

var myDate = new Date("20131218"); 
console.log(myDate); 

但輸出Date{ Invalid Date }如此明顯這是錯誤的。

我的問題在這裏JavaScript是什麼等效的strtotime?或者如果沒有相應的內容,我如何將此值轉換爲我的預期結果(2013-12-18)使用javascript?

您的幫助將不勝感激!

謝謝! :)

+0

退房http://momentjs.com – cyberwombat

回答

0

爲什麼它顯示無效日期的原因是,它希望它是在格式

Following format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS 

如果您使用以下格式只需添加在相關位置衝刺,那麼你是好去破壞你的字符串並使用newDate。

1. var myDate = new Date("2013-12-18"); 
     alert(myDate); 

2. var myDate = new Date(2013,12,18); 

最終,您可以修改您的字符串來操作它並以前述格式使用它。

1

該值無效將其轉換爲日期。因此,無論是從您的PHP代碼發送它像一個適當的格式,如20131218

或將您在Javascript中獲得的值轉換爲類似的格式。

var dateVal="20131218"; 
/* 
// If it's number ******* // 
var numdate=20131218; 
var dateVal=numdate.toString(); 
*/ 

var year=dateVal.substring(0,4); 
var mnth=dateVal.substring(4,6); 
var day=dateVal.substring(6,8); 
var dateString=year+"-"+mnth+"-"+day; 


var actualDate = new Date(dateString); 
alert(actualDate); 

JSFIDDLE DEMO

1

JavaScript有一個Date.parse方法,但你有串不適合傳遞給它。你並不需要創建一個日期對象來格式化一個字符串。試想一下:

function formatDateStr(s) { 
    s = s.match(/\d\d/g); 
    return s[0] + s[1] + '-' + s[2] + '-' + s[3]; 
} 

alert(formatDateStr('20131218')); // '2013-12-18' 

如果你想將其轉換爲一個日期對象,那麼:

function parseDateStr(s) { 
    s = s.match(/\d\d/g); 
    return new Date(s[0] + s[1], --s[2], s[3]); 
}