如何使用moment-timezone获取指定时区的当前日期
获取指定时区的当前日期(Moment-Timezone)
嘿,这事儿超简单,你只需要在moment-timezone的调用里明确指定时区就行!
你原来的代码是获取默认时区(一般是系统本地时区或UTC,取决于运行环境)的日期,要切换到America/Los_Angeles时区,只需要用.tz()方法锁定目标时区:
// 引入moment-timezone并指定洛杉矶时区,再格式化日期 const laCurrentDate = require('moment-timezone').tz('America/Los_Angeles').format('YYYY-MM-DD'); console.log(laCurrentDate); // 当UTC时间为2019-01-01 04:00时,会输出 "2018-12-31"
这里有两个细节要注意:
- 时区指定:
.tz('America/Los_Angeles')会自动处理洛杉矶的夏令时/冬令时时差变化,不用你手动计算偏移量,直接得到对应时区的本地时间。 - 日期格式:你原来用的
Y-DD-MM会输出两位年份+日+月(比如18-31-12),而你需要的是2018-12-31这种年-月-日格式,所以要改成YYYY-MM-DD(YYYY代表四位年份,MM是两位月份,DD是两位日期)。
原理很直观:moment-timezone先获取当前UTC时间,再根据你指定的时区规则转换为对应时区的本地时间,最后按你要的格式输出日期——完全匹配你描述的场景,当UTC是2019年1月1日4点时,洛杉矶的本地日期就是2018年12月31日。
内容的提问来源于stack exchange,提问作者eran
相关产品推荐
相关产品推荐

