时间戳为人类可读格式


89

好吧,当我使用javascript从unix时间戳转换为人类表示形式时,我遇到了一个奇怪的问题

这是时间戳

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 0000。但这是2011、2、6、0、0、0我想念什么?



我所做的就是一样
georgevich 2011年

我在Firefox Firebug控制台中尝试了此操作,并获得了预期的结果。您正在使用哪个浏览器/操作系统?
andrewmu 2011年

我创建了一个jsfiddle,它似乎可以正常工作:jsfiddle.net/9SUqX(我在Opera上进行了测试)
James Hulse

Answers:


100

getDay()返回星期几。要获取日期,请使用date.getDate()getMonth()检索月份,但是month从零开始,因此使用getMonth()+1应该为您提供正确的月份。尽管这里的小时数是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]

1
您建议的日期帮助,但我仍然无法弄清楚小时,分钟和秒是怎么回事
georgevich 2011年

7
@乔治,你什么都不会错过。这些值是整数,因此不能具有“ 00”之类的值。例如,您可以轻松地自己添加minute = (minute < 10 ? "0" : "") + minute;
Shadow Wizard是Ear For You的

@georgevich:您在哪个时区?如果使用该date.getUTCHours()怎么办?
KooiInc 2011年

1
GMT + 2 date.getUTCHours()的结果是19
georgevich 2011年

GMT + 2,因此22h世界时间= 0h您的时间。这是一个使用UTC值的jsfiddlejsfiddle.net/EZFG9
KooiInc 2011年

47
var newDate = new Date();
newDate.setTime(unixtime*1000);
dateString = newDate.toUTCString();

unixtimesql db返回的时间在哪里。如果有帮助,这是一个小提琴

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

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


我找到了这个答案,在这里[* .toString()]有用的答案非常有用: stackoverflow.com/questions/13622142/… 这是要点: gist.github.com/victoriastuart/b9fb09b890ef88755538b24b0207fece
Victoria Stuart

1
"unixtime is undefined"这就是我要到达的地方
凯蒂(Katie)

1
无论如何,它可以很容易地转向在onelinernew Date(1480966325 * 1000).toUTCString()
Rozkalns

9

这是kooilnc的答案,带填充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;
}

7

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

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

为什么时间戳乘以1000?
布鲁诺·戈麦斯2015年

2
@BrunoGomes他假设时间戳以秒为单位,而javascript以毫秒为单位。
布伦特

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.