【问题标题】:angular moment time difference calculation error角矩时差计算误差
【发布时间】:2018-07-19 00:43:07
【问题描述】:

我正在尝试计算现在与过去某个时间之间的时间差。 关于我的网络系统(通过 API)的工作原理,我不会在这里深入探讨,但本质上我会返回一系列发布时间。

我想要达到的目标:

NOW (UTC) - PUBLICATION (UTC) = DIFFERENCE IN SECONDS

我从系统返回的发布时间已经是日期时间格式 YYYY-MM-DD HH:MM:SS 和 UTC 时间。

我正在使用这个 angular-2 模块:https://www.npmjs.com/package/angular2-moment

此时实际执行的计算是:

PUBLICATION (UTC) - NOW (NOT IN UTC) = DIFFERENCE IN SECONDS

我的 HTML:

<td><time>{{nextDay | amDifference: (i['pubDate']):'seconds' : false}}</time></td>

我想做的例子:

right now UTC (2018-07-18 14:10:55) - publication time utc (2018-07-18 12:32:51) = 5884 seconds

这一定是在 html 中切换管道的问题,但我找不到任何关于如何进行计算的文档,但我在 Python 中复制了我的问题,发现每个问题都占用了错误的时间其他。非常感谢所有帮助!

【问题讨论】:

  • 如果要在UTC中获得最终结果,为什么要使用其他时区(不是UTC)进行计算?
  • @dAxx_ 你是什么意思?
  • 你说:PUBLICATION (UTC) - NOW (NOT IN UTC) = DIFFERENCE IN SECONDS,你的数据是UTC,为什么计算NOW时间戳不是UTC
  • @dAxx_ 这正是我想要实现的目标......我明确表示我想在 UTC 中减去两次
  • 如何获取当前时间?

标签: angular typescript angular2-moment


【解决方案1】:

看来您只是以错误的方式计算当前时间,所以我尝试使用 moment npm 包来获得正确的结果并且它工作正常。
试试这个:

let currentTime = new Date().toUTCString();

在您的 HTML 中:

{{currentTime | amDifference: '2018-07-18 14:23:45' :'seconds' : true}}

我已经尝试过了,它有效,在您的情况下,只需将“2018-07-18 14:23:45”更改为您的实际发布日期即可。

--更新
您应该在 ngOnInit() 中创建 currentTime 变量,它会在组件加载时创建一次。如果你想要一个动态时间戳,假设这个日期应该每 1 秒更新一次,你需要创建 Observable 并设置每 1000 毫秒的间隔来更新时间,所以你总是会得到当前时间。

--更新 2
检查这个工作示例并比较: Example

【讨论】:

  • 你在哪里定义“让 currentTime = new Date().toUTCString();”?
  • 在 app.component 中??
  • @dataviews,我已经添加了更多解释。祝你好运!
  • 我仍然感到消极
  • 我应该提一下,我正在使用 Angular 5 和 typescript 顺便说一句
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 2013-09-05
相关资源
最近更新 更多