2011-01-10 35 views
1

在时代 是 周五2010年2月12日12点五十五分51秒GMT-0500(EST)难倒JS大纪元皈依

我试图把它写成: 月, 12 2010

但我得到:月,10 42087

什我做错了吗?

function makeHumanDate(epoch) { 
    var theDate = epoch * 1000 
    var months = new Array(13); 
    months[0] = "January"; 
    months[1] = "February"; 
    months[2] = "March"; 
    months[3] = "April"; 
    months[4] = "May"; 
    months[5] = "June"; 
    months[6] = "July"; 
    months[7] = "August"; 
    months[8] = "September"; 
    months[9] = "October"; 
    months[10] = "November"; 
    months[11] = "December"; 
    var d   = new Date(theDate); 
    var monthnumber = d.getUTCMonth(); 
    var monthname = months[monthnumber]; 
    var monthday = d.getUTCDate(); 
    var year  = d.getFullYear(); 
    if(year < 2000) { year = year + 1900; } 
    var dateString = monthname + 
        ', ' + 
        monthday + 
        ' ' + 
        year; 
    // Goal is: February, 12 2010 
    return dateString; 
} 

我知道它的一些愚蠢的东西,但我被卡住了一段时间。请帮忙。

谢谢!

+0

只是一些不请自来的建议。你可以像这样`var months = ['January','February','March','April','May','June','July','August','September','十月','十一月','十二月'];` – Hemlock 2011-01-10 20:41:05

回答

3

你不需要通过1000在您的示例代码乘以epoch - 如果你采取了这一点,它按预期工作:)

一些代码清理

function makeHumanDate(epoch) { 
    var months = ["January", 
       "February", 
       "March", 
       "April", 
       "May", 
       "June", 
       "July", 
       "August", 
       "September", 
       "October", 
       "November", 
       "December"], 
     d = new Date(epoch), 
     month = months[d.getUTCMonth()], 
     day = d.getUTCDate(), 
     year = d.getFullYear(); 

    // not needed as getFullYear returns the full year in 4 digits 
    //if(year < 2000) year += 1900; 

    return month + ', ' + day + ' ' + year; 
} 
+0

只有我必须改变这个工作是Date(epoch/1)。谢谢你让我失去知觉。 – 2011-01-10 21:07:37

0

您的代码很好,但你的输入被打破。如果我使用http://www.onlineconversion.com/unix_time.htm 我会得到与您相同的结果。

你的时间戳似乎需要1000除法才能让它回到一个合理的框架,之后我得到正确的结果。