2014-09-02 51 views
0

我有一個JavaScript方法獲取當前日期並返回其通用時間。下面是代碼:Javascript方法Date()在我的系統上返回錯誤的日期(2月9日,而不是9月2日),

function calUTCTime(offset) { 

     var currentDate = new Date();  

     var utc = currentDate.getTime() - (currentDate.getTimezoneOffset() * 60000); 

     var result = new Date(utc + (3600000 * offset)); 

     return result .toLocaleString(); 
    } 

上面的代碼是返回錯誤的日期,它是與月份和日期格式在我的系統更換日期爲dd-MM-yyyy,操作系統是Windows 8。我嘗試了其他系統的,日期是正確的,但在我的系統上它是錯誤的。請分享建議。

+2

這正是我想從'.toLocaleString()預期;' 。瀏覽器正在從操作系統中確定您的語言(或「語言環境」),並在該方法中使用它來確定如何輸出字符串。嘗試使用'.toString();'代替。看[區別](http://stackoverflow.com/questions/11945272/javascript-difference-between-tostring-and-tolocalestring-methods-of-date)。 – 2014-09-02 11:42:45

+0

@Cory好的我會嘗試。 – NMathur 2014-09-02 11:47:52

+0

你爲什麼要創建一個新的日期?如果要格式化UTC偏移量中的日期,請使用'.UTUTCString()'。 – Sacho 2014-09-02 11:56:05

回答

1

這正是我期望從.toLocaleString()。瀏覽器正在從操作系統中確定您的語言(或「語言環境」),並使用它來選擇如何輸出字符串。如果您想要一個通用的人類可讀的日期格式,請嘗試使用簡單的.toString()

如果您想要完全控制日期的格式,請嘗試使用類似moment.js的庫。例如,您上面的代碼可以被濃縮到:

return moment().utc().format("YYYY-MM-DD"); // "2014-09-02" 

還有就是總結了兩種方法之間的區別另一篇文章:JavaScript: Difference between toString() and toLocaleString() methods of Date

相關問題