Javascript Unix时间戳和新西兰时区中前一周的周一和周日
我想知道,当系统时钟(AWS Lambda)位于不同的时区时,在新西兰时区获取周一和周日的unix时间戳的最佳方法是什么 我试过下面的方法,它在我的本地计算机上运行得很好,但是很明显,当在AWS上执行时,它将是一个不同的时区 有人能建议处理时区的最佳方法,这样代码就可以在任何位置运行吗Javascript Unix时间戳和新西兰时区中前一周的周一和周日,javascript,timezone,momentjs,Javascript,Timezone,Momentjs,我想知道,当系统时钟(AWS Lambda)位于不同的时区时,在新西兰时区获取周一和周日的unix时间戳的最佳方法是什么 我试过下面的方法,它在我的本地计算机上运行得很好,但是很明显,当在AWS上执行时,它将是一个不同的时区 有人能建议处理时区的最佳方法,这样代码就可以在任何位置运行吗 var monday = moment().day(-13).startOf('day').toDate().getTime() // Monday last week var sunday = moment(
var monday = moment().day(-13).startOf('day').toDate().getTime() // Monday last week
var sunday = moment().day(-7).startOf('day').toDate().getTime() // Sunday last week
Unix时间戳始终以UTC表示时间,而不管您的位置如何。要获取您所在位置的本地时间,请将时区偏移量应用于unix时间戳 有几件事:
- 您可以在当前使用
- 新西兰有两个不同的IANA时区标识符:
覆盖新西兰大部分地区,标准时间使用UTC+12:00,夏令时使用UTC+13:00Pacific/Auckland
涵盖查塔姆群岛,它也是新西兰的一部分。但是,查塔姆在标准时间使用UTC+12:45,在夏令时使用UTC+13:45Pacific/Chatham
- 您不需要转换为
对象。矩可以直接给您一个Unix时间戳,可以使用日期
以秒为单位,也可以使用.Unix()
以毫秒为单位。两者都意味着转换为UTC,因为Unix时间戳本质上是基于UTC的.valueOf()
- 一个人不能得到一整天的Unix时间戳,而只能得到一个时间点的时间戳。您可能要查找的时间戳是在当地一天的开始,在新西兰总是午夜(
)(但不一定在DST过渡日的其他时区,具体取决于过渡时间)00:00
- 当使用Moment的
功能时,day
并不表示“上周的星期一”。它的意思是“两个星期一以前”。如果你的意思是“一个星期一以前”,那就是day(-13)
。同样地,day(-6)
的意思是“一个星期日之前。在这两种情况下,它都不计算当前日期。例如,由于今天是2019-09-01的星期日,day(-7)
指的是2019-08-25的星期日day(-7)
var oneMondayAgoInAuckland = moment.tz('Pacific/Auckland').day(-6).startOf('day').valueOf();
var oneSundayAgoInAuckland = moment.tz('Pacific/Auckland').day(-7).startOf('day').valueOf();
目前,它们分别返回156673440000
和15666648000000