时间戳到人们可读的格式

那么我有一个奇怪的问题,而从UNIX时间戳转换为人类表示使用JavaScript

这是时间戳

1301090400 

这是我的JavaScript

 var date = new Date(timestamp * 1000); var year = date.getFullYear(); var month = date.getMonth(); var day = date.getDay(); var hour = date.getHours(); var minute = date.getMinutes(); var seconds = date.getSeconds(); 

我预计结果是2011年2月25日22 00 00.但是,2011年2月6日,0日,0日我想念什么?

getDay()返回星期几。 要获取date,请使用date.getDate()getMonth()检索月份,但月份是基于零的,所以使用getMonth()+1应该给你正确的月份。 在这里,时间价值似乎没问题,尽pipe这里的时间是23(GMT + 1)。 如果你想要普遍的价值,添加UTC的方法(如date.getUTCFullYear()date.getUTCHours()

 var timestamp = 1301090400, date = new Date(timestamp * 1000), datevalues = [ date.getFullYear(), date.getMonth()+1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), ]; alert(datevalues); //=> [2011, 3, 25, 23, 0, 0] 
 var newDate = new Date(); newDate.setTime(unixtime*1000); dateString = newDate.toUTCString(); 

其中unixtime是你的SQL DB返回的时间。 这是一个小提琴,如果有帮助。

例如,在当前时间使用它:

 document.write( new Date().toUTCString() ); 

小时,分钟和秒钟取决于您的操作系统的时区。 在格林尼治标准时间(UST)22:00:00,但在不同的时区可以是任何东西。 因此,将时区偏移添加到创buildGMTdate的时间:

 var d = new Date(); date = new Date(timestamp*1000 + d.getTimezoneOffset() * 60000) 

这里是kooilnc的回答w /填充0的

 function getFormattedDate() { var date = new Date(); var month = date.getMonth() + 1; var day = date.getDate(); var hour = date.getHours(); var min = date.getMinutes(); var sec = date.getSeconds(); month = (month < 10 ? "0" : "") + month; day = (day < 10 ? "0" : "") + day; hour = (hour < 10 ? "0" : "") + hour; min = (min < 10 ? "0" : "") + min; sec = (sec < 10 ? "0" : "") + sec; var str = date.getFullYear() + "-" + month + "-" + day + "_" + hour + ":" + min + ":" + sec; /*alert(str);*/ return str; } 

使用Date.prototype.toLocaleTimeString()在这里logging

请注意url中的语言环境示例en-US。