【问题标题】:Angular date filter not working with Stripe timestamp角度日期过滤器不适用于 Stripe 时间戳
【发布时间】:2014-05-24 21:07:02
【问题描述】:

我有一个由 Stripe 的 API 提供的时间戳。 1397166153.

但是,当以最简单的形式 {{ 1397166153 | date }} 使用它时,我得到:1970 年 1 月 17 日,而实际上应该是 2014 年 4 月 10 日。

有人知道这里发生了什么吗?

非常感谢您的帮助!

【问题讨论】:

    标签: javascript angularjs timestamp


    【解决方案1】:

    我总是通过一个函数运行我所有的时间戳,因为 JavaScript 纪元以毫秒为单位,而 Stripe 响应纪元以秒为单位。

    $scope.timestamp = function(epoch){
        return (epoch * 1000);
    };
    

    然后,在您的模板中:

     <p>{{ timestamp(1397166153) | date }}</p>
    

    或者,如果您只需要执行一次,您可以随时内联执行:

     <p>{{ (1397166153 * 1000) | date }}</p>
    

    【讨论】:

    • 啊,这就解释了。像魅力一样工作!
    【解决方案2】:

    时间戳似乎以秒为单位。

    var seconds = 1397166153; //your value
    var ms = seconds * 1000;
    
    new Date(seconds) // Fri Jan 16 1970 21:06:06 GMT-0700 (Mountain Standard Time)
    new Date(ms) // Thu Apr 10 2014 15:42:33 GMT-0600 (Mountain Daylight Time)
    

    我不确定 Stripe 将其发送回的格式。但我总是必须转换为 Date 对象或 ms 才能使用 Angular 日期过滤器。

    【讨论】:

    • 是的,时间戳以秒为单位。感谢您的帮助。
    • 绝妙的答案!我今天在互联网上找到的最有用的东西 :) (全面披露:作为一个无家可归的人,我通常不会经常使用互联网)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 2015-12-17
    • 2016-11-24
    • 2017-01-12
    • 1970-01-01
    • 2016-03-13
    相关资源
    最近更新 更多