首页 > 解决方案 > dynamodb nodejs/lambda date.now()

问题描述

我正在尝试在 dynamodb 中实现 TTL(生存时间)并在时间上得到意想不到的结果。

我填充此数据库的 lambda 函数 (nodejs10.x) 对created_onandcode_expiration字段使用以下代码:

  const created_on = Date.now()
  const code_expiration = created_on + (process.env.EXPIRY_MINUTES * 60 * 1000)

在我的 lambda 环境变量中,我EXPIRY_MINUTES设置为 2880

查看https://www.epochconverter.com/我的纪元时间整数得到以下值:

created_on: 1569822339715
GMT: Monday, September 30, 2019 5:45:39.715 AM
Your time zone: Monday, September 30, 2019 1:45:39.715 AM GMT-04:00 DST
Relative: 9 minutes ago

code_expiration: 1569995139715
GMT: Wednesday, October 2, 2019 5:45:39.715 AM
Your time zone: Wednesday, October 2, 2019 1:45:39.715 AM GMT-04:00 DST
Relative: In 2 days

我很好奇为什么当我将鼠标悬停在 dynamodb 中的记录上时,它显示的日期是大约 5 万年后? 在此处输入图像描述

我需要以不同的方式捕获纪元时间吗?
如果我处理正确,TTL 服务会将其读取为 02/10/2019 还是 02/03/51721?

标签: javascriptnode.jsamazon-web-servicesamazon-dynamodb

解决方案


  const created_on = Math.floor(new Date().getTime() / 1000.0)
  const code_expiration = created_on + (process.env.EXPIRY_MINUTES * 60)

不要转换为毫秒


推荐阅读