2017-08-09 41 views
-3

我有Date對象,並希望格式化。如何格式化日期對象,以便它給我yyyy-MM-dd hh:mm:ss

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

這是我想能夠打印

YYYY-MM-DD HH的格式:MM:SS

2017年8月9日19點48分: 54

無論我嘗試我不能讓它使用console.log來打印。我總是得到像

Wed Aug 09 2017 19:48:54 GMT+0200 (Central Europe Daylight Time) 
or 
Wed, 09 Aug 2017 17:48:54 GMT 

我不需要嵌入所有額外的信息。如果我創建Date對象,時間是19:53:00,日期是2017-08-09,那麼我只需要這個2017-08-98 19:53:00

我該如何得到它?我需要像這樣發送給服務器。

+2

我建議你看着使用[momentjs](https://momentjs.com/) –

回答

0

你可以使用momentjs庫:

> moment().format('YYYY-MM-DD HH:mm:ss') 
< "2017-08-09 01:57:51" 

您還可以使用時刻用一個javascript Date對象:

const myDate = new Date() 
moment(myDate).format('YYYY-MM-DD HH:mm:ss') 
+1

當某些東西可用時,建議使用外部庫作爲標準是沒有用的;加載庫在開發人員和執行時間上代價高昂。 – GKFX

+0

這是一個解決方案,可行且直接。也許OP想要做非標準的東西。但是,感謝您的評論,用戶可能會考慮不使用它,我會更新到_could_ :) –

+0

我有權訪問我的項目中的時刻,如何讓我的日期對象成爲一個對象,以便我可以按照您的建議對其進行格式化? –

1
let d = new Date(); // prints Wed Aug 09 2017 13:55:59 GMT-0400 
d.toISOString();  // prints "2017-08-09T17:55:59.428Z" 
// process the string to output in your desired format 
+1

好的答案,但它值得檢查顯而易見的重複,而只是標記問題。 – GKFX

+1

它不是問題得到2017-08-09T17:55:59.428Z但是,如你所見,這是4小時的時間,我想2017-08-09 13:55:59 –

+0

@maxit我在GMT- 4和ISO8601總是在格林尼治標準時間,所以這是我的結果。爲了處理時區,你需要一些更復雜的東西,比如moment.js。 – user3080953

2

這工作得很好:

function T(n) { return n<10?'0'+n:n; } 
var d = new Date(); 
var formatted = d.getFullYear()+'-'+T(d.getMonth())+'-'+T(d.getDay())+' '+T(d.getHours())+':'+T(d.getMinutes())+':'+T(d.getSeconds()); 
console.log(formatted); // => 2017-07-03 19:08:30 
+1

你的'T'函數可以連接'n'的值,所以你不必調用getter兩次:) –

+0

@UlysseBN Brilliant,thanks。 –

+0

T函數有時也返回一個字符串,並給其他的數字,考慮使它總是返回一個字符串:'return(n <10?'0':'')+ n'。 ;-) – RobG

相關問題