转换时间格式2019-01-21 05:05:11.000000为1548060780546

时间:2019-01-22 10:47:19

标签: javascript date timestamp

在我的角度应用程序中,我从后端API获得的日志时间为2019-01-21 05:05:11.000000(时区= UTC,时区类型= 3)。以同样的方式,使用以下代码获取当前时间。

removeFromCart(productdet) {
    return this.getCartItems().then(result => {
      if (result && result.length) {
        const newList = result.filter(el => el.id !== productdet.id);
        return this.storage.set(CART_KEY, newList);
      }
    })
  }

我获得了currentTime的输出“ 1548152940836”。

我使用getTimezoneOffset()方法返回UTC时间与本地时间之间的时差。

const now = new Date();
const currentTime = now.getTime();

在我的应用程序中,我想获取记录的时间和currentTime之间的时差,并检查该时差是否大于7200秒。 但这使我产生的时差总是大于7200,000毫秒。

1 个答案:

答案 0 :(得分:0)

如果您的lastLoginAt字符串的格式与2019-01-21 05:05:11.000000完全一样,并且表示UTC时间戳,那么在解析之前,您首先需要将其更改为2019-01-21T05:05:11.000000Z。这是ECMAScript规范要求的ISO 8601扩展UTC格式(也是RFC 3339)。

然后,您可以简单地减去时间戳记。无需调整时区偏移,因为两个值均基于UTC。

(为方便起见,您也可以使用Date.parseDate.now而不是分配Date对象实例。两者都返回数字时间戳。)

const loggedTime = Date.parse(lastLoginAt.replace(' ', 'T') + 'Z');
const currentTime = Date.now();

if (currentTime - loggedTime > 7200000) {

}

或者,考虑使用诸如Luxondate-fns之类的库,它们提供了使此操作更加容易的功能。