【问题标题】:How do I get the current time zone where my app resides如何获取我的应用程序所在的当前时区
【发布时间】:2021-10-01 02:32:55
【问题描述】:

我已经有这个问题好几个月了,我终于取得了一些进展。我正在编写一个应用程序,它会在东部时间上午 9 点和晚上 9 点的特定时间向我发送消息。当我在本地运行它时,它运行良好,但是当我部署它时,我什么也得不到。我在胡闹,然后我看到了这个Heroku Logs。我的猜测是我的应用程序位于不同时区的服务器上,并且当下面的代码运行时。条件永远不会满足,也不会发送任何内容。我现在的问题是,无论服务器位于哪个时区,有没有一种方法可以获取当前时间并进行比较?

const sendMessage = require('./sms-api.js');

const send = () =>{

    setInterval(()=>{

        var x = new Date().toLocaleTimeString();
        console.log(x);
    
       if(x === '11:00:10 AM')
       {
           console.log('match');
           return sendMessage('6178032176', 'Good Morning');
       }
       else if(x === '9:50:20 PM')
       {
           console.log('match');
           sendMessage('6178032176', 'Good Evening');
       }
    },1000)
}

send();

【问题讨论】:

    标签: node.js api express heroku sms


    【解决方案1】:

    在不同时区工作时,最好在UTC工作,然后根据需要的时区进行偏移。

    获取UTC时间,然后根据需要的时区进行偏移。

    您还可以使用moment-timezone 等专用库。
    https://momentjs.com/timezone/docs/

    【讨论】:

      【解决方案2】:

      就像 Suyash 上面所说的,您最好的选择是完全在 UTC 中工作,并且仅在向用户显示时间时进行转换。您可以在日期和时间后面加上一个“Z”来表示它们是通用的,而不是处理偏移量。

      我发现最好的方法是使用 moment.js 和 moment-timezone.js。这是一个允许您转换时间和日期的实现示例:https://github.com/aidanjrauscher/browser-timezone-conversions。这些库还可以非常方便地将任何与日期或时间相关的用户输入从其本地时区转换回 UTC。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-30
        • 1970-01-01
        相关资源
        最近更新 更多