2014-09-02 47 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

相关问题