heroku moment() js unix 时间戳不正确
heroku moment() js unix timestamp is incorrect
我在 Heroku 服务器上遇到问题。在我的本地服务器上使用 moment.js 将 unix 时间戳保存到我的数据库可以正常运行。然而在 Heroku 上,时间戳晚了 23 小时,四舍五入到最接近的小时。
dateProvided = Number(moment($('#dateProvided').val(), 'DD/MM/YYYY').unix())
$('#dateProvided').val() 提供的值为“12/08/2017”。本地和 Heroku 服务器的 unix 时间戳都是“1502492400”,转换时是“08/11/2017 @ 11:00pm (UTC)”。
Return值
当我想要已保存的值时,代码是:
moment.unix(dateProvided).format('DD/MM/YYYY')
浏览器
上面的代码 returns 浏览器上的正确日期“12/08/2017”。
Heroku 服务器
上面的代码 returns Heroku 服务器上的错误日期“11/08/2017”。
问题是我的本地时区被用作 unix 时间戳,而 Heroku 使用的是 UTC 时区。因此,在保存 Heroku 时是不同的。解决方案是:
moment.utc(value, 'DD/MM/YYYY').unix()
这样可以确保在保存时间戳时时区与 Heroku 相同。
使用模块 moment-timezone 因为它可以处理世界上所有类型的时区。它解决了我的 Heroku date/times.
问题
Example:
const date = moment().tz('Europe/London').format('DD/MM/YYYY');
我在 Heroku 服务器上遇到问题。在我的本地服务器上使用 moment.js 将 unix 时间戳保存到我的数据库可以正常运行。然而在 Heroku 上,时间戳晚了 23 小时,四舍五入到最接近的小时。
dateProvided = Number(moment($('#dateProvided').val(), 'DD/MM/YYYY').unix())
$('#dateProvided').val() 提供的值为“12/08/2017”。本地和 Heroku 服务器的 unix 时间戳都是“1502492400”,转换时是“08/11/2017 @ 11:00pm (UTC)”。
Return值
当我想要已保存的值时,代码是:
moment.unix(dateProvided).format('DD/MM/YYYY')
浏览器
上面的代码 returns 浏览器上的正确日期“12/08/2017”。
Heroku 服务器
上面的代码 returns Heroku 服务器上的错误日期“11/08/2017”。
问题是我的本地时区被用作 unix 时间戳,而 Heroku 使用的是 UTC 时区。因此,在保存 Heroku 时是不同的。解决方案是:
moment.utc(value, 'DD/MM/YYYY').unix()
这样可以确保在保存时间戳时时区与 Heroku 相同。
使用模块 moment-timezone 因为它可以处理世界上所有类型的时区。它解决了我的 Heroku date/times.
问题Example:
const date = moment().tz('Europe/London').format('DD/MM/YYYY');