咨询moment.utc(date)与moment(date).utc()的区别及行为差异
理解moment.utc(date)与moment(date).utc()的行为差异
这俩方法的核心差异在于解析阶段的时区基准完全不同,咱们结合你在EST时区的测试场景拆解一下:
moment.utc('2018-05-31'):直接以UTC时区解析日期
当你调用这个方法时,moment会把输入的YYYY-MM-DD字符串直接当作UTC时区的日期来解析。也就是说,它默认这个日期的00:00是UTC时间的零点,所以格式化后自然就是2018-05-31T00:00:00Z(末尾的Z代表UTC时区)。moment('2018-05-31').utc():先按本地时区解析,再转换到UTC
这是分两步完成的操作:- 第一步
moment('2018-05-31')会以你当前的本地时区(这里是EST,比UTC慢4小时)来解析日期。YYYY-MM-DD格式会被解析为EST时区的2018-05-31 00:00:00。 - 第二步调用
.utc()方法,是把已经解析好的本地时间转换为UTC时区的等价时间。EST的00:00对应UTC的04:00,所以最终格式化后就是2018-05-31T04:00:00Z。
- 第一步
简单来说:前者是从一开始就用UTC作为解析基准,后者是先按本地时区解析出时间,再转成UTC表示,这就是为什么两个结果差了4小时。
内容的提问来源于stack exchange,提问作者inside
相关产品推荐
相关产品推荐

