【问题标题】:Date.UTC() gets value nullDate.UTC() 获取值为 null
【发布时间】:2016-04-13 06:58:06
【问题描述】:

从服务器我得到 UTC 格式的日期,例如,

2016-04-13T02:37:13.211316121-04:00 

当我使用 new Date(data.Created_at) 显示时,我得到 7 分钟的时差。就像我以 {{my_date | 格式显示我的日期一样日期:'h:mm a'}},显示12:05 PM,它显示11:58 AM。所以我尝试了这个,

data.Created_at = new Date(Date.UTC(data.Created_at))

返回null 值。我的代码有问题吗?我应该如何获得完美的约会?

【问题讨论】:

    标签: javascript angularjs time


    【解决方案1】:

    如果你检查Date.UTC的语法,

    Date.UTC(年, 月[, 日[, 小时[, 分钟[, 秒[, 毫秒]]]]])

    它需要不同变量中的值,而不是日期字符串。可以拆分,手动解析。

    你可以试试这样的:

    JSFiddle

    var d = "2016-04-13T02:37:13.211316121-04:00";
    var date_arr = d.split(/[-|T|\.|:]/);
    var o = new Date(Date.UTC(date_arr[0], date_arr[1], date_arr[2], date_arr[3], date_arr[4], date_arr[5]));
    console.log(date_arr, o);
    

    另外,它给了我8:07 AM,考虑到时间是2:37,我的时区是+5:30

    【讨论】:

    • 我试过你的代码。我现在得到了“2016-04-13T04:44:56.438972462-04:00”......我现在的时间是下午 2:22 .. 你的代码在上午 10:14 返回我
    • 那是因为,正如我所提到的,它将根据本地时区创建日期。当您的时区在5:30 附近时,您为什么期望带有时间2:37 的UTC 日期显示11:58
    • 你是对的。但我要说的是,我在下午 2:22 创建了该请求。在转换为当地时间的 UTC 日期返回上午 10:14。应该是下午 2:22 左右
    【解决方案2】:

    这样使用

    Date.UTC(year,month,day,hours,minutes,seconds,millisec)

    【讨论】:

      【解决方案3】:

      您使用的代码是无效的日期处理方式。您可以使用此代码

      new Date('2016-04-13T02:37:13.211316121-04:00').toISOString();
      

      【讨论】:

        【解决方案4】:
            var created_at = new Date(createdAt);
        
        var created_at_date = (created_at.getUTCMonth()+1) + "/" + created_at.getUTCDate() + "/" + created_at.getUTCFullYear() + "/" + created_at.getHours() + ":" 
        + created_at.getMinutes() + ":" + created_at.getSeconds();
        

        希望这对你有用!!!

        【讨论】:

        • 日期没有问题。我需要准确的时间。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-10
        • 2013-05-26
        • 2013-07-14
        • 2012-05-23
        • 2022-10-07
        • 2019-04-21
        • 1970-01-01
        相关资源
        最近更新 更多