在firebase函数中的moment.js在mailgun中发送错误的时间。

问题描述 投票:0回答:1

在firebase功能中,我使用以下方法向用户发送电子邮件 邮枪 在firebase数据库中触发某件事情,当前时间在 瞬间.js 像这样。

 if (partnerEmail) {
    console.log(`online class email to partner`)
    let emailData = {
        recipient: partnerEmail,
        date: moment(date * 1000).format('MMMM Do YYYY'),
        time: moment(new Date()).format('h:mm:ss a'),
    };
    emailUtils.onlineClassPartner(emailData)
}

但时间属性给出了错误的时、分、秒。

当前时间是 下午05:48:00 但在电子邮件中却显示 上午11:49:59

javascript firebase momentjs
1个回答
0
投票

你需要明白,你这里有一个时区问题。

为了给你的用户设置一个合适的时间,你可能需要知道他们所处的时区(不是很理想,因为人们都在旅行),以便在合适的时区向他们显示日期。

电子邮件的内容是静态的,日期不能在当前用户的时区自动格式化。

当使用 moment(new Date()).format('h:mm:ss a') 在你的功能上,它将被设置在你的服务器所在时区的日期小时。

你有两个选择。

  1. 为你的每个用户定期获取他们的时区,然后通过以下方式来格式化日期: 用UTC抵消差额
  2. 向您的用户指定显示给他们的日期是以GMT+X表示的(例如,如果您的大多数客户在中国,那么显示给他们的日期显然是以GMT+8表示的)。
© www.soinside.com 2019 - 2024. All rights reserved.