Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可靠地处理firebase函数中的日期时间_Javascript_Firebase_Date_Firebase Realtime Database_Google Cloud Functions - Fatal编程技术网

Javascript 可靠地处理firebase函数中的日期时间

Javascript 可靠地处理firebase函数中的日期时间,javascript,firebase,date,firebase-realtime-database,google-cloud-functions,Javascript,Firebase,Date,Firebase Realtime Database,Google Cloud Functions,所以,我使用firebase实时数据库和firebase函数作为触发器 我们的应用程序存储每日分析数据。例如,今天发送的邮件总数。因此,在firebase DB中,我们创建了一个时间戳作为一天开始的节点。要计算的代码如下所示: function findDayBegninning(date:any){ const ms = date.getTime(); const msPerDay = 86400 * 1000; return ms - (ms % msPerDay)

所以,我使用firebase实时数据库和firebase函数作为触发器

我们的应用程序存储每日分析数据。例如,今天发送的邮件总数。因此,在firebase DB中,我们创建了一个时间戳作为一天开始的节点。要计算的代码如下所示:

function findDayBegninning(date:any){
    const ms = date.getTime();
    const msPerDay = 86400 * 1000;
    return  ms - (ms % msPerDay);
}
问题是,我们不知道如何将其与特定时区对齐。例如,对于当前行为,即将出现的时间戳是

15610750000

格林尼治标准时间显示为2019年6月20日星期四下午5:00:00

所以,基本上在我的时区,一天被认为是从每天下午5点开始。这显然是一个问题,因为我需要它是凌晨12点(午夜)

那么,如何处理呢?只需添加(7*60*60*1000)即可


我担心这样做会使其他时区的每日统计出错

JavaScript整数时间戳通常为UTC。您应该将它们存储在UTC时区中,并将它们转换为使用它们的客户端或服务器代码中的本地时区。上述代码位于服务器端,因此应该是正确的,因为getTime将以UTC为单位提供时间。但按照CA时区,每天下午5点结束一天。在实行夏时制的地方,一天并不都是24小时。偏移量会不时变化,因此,是的,您必须使用不同的偏移量,加上偏移量和DST观测的历史变化来适应每个地方的偏移量。考虑使用一个包含时区功能的库(可能利用IANA时区数据库),写下所有这些都是一项重要的任务。