Javascript 为什么在一个月的第一天获取'MMMM'格式会返回上一个月使用的矩js?

Javascript 为什么在一个月的第一天获取'MMMM'格式会返回上一个月使用的矩js?,javascript,momentjs,Javascript,Momentjs,为什么每月第一天获取的MMMM格式返回上一个月,但从每月第二天开始返回正确的月份,使用此格式2020-08-01T00:00:00Z?这和时区偏移有关吗?下面的例子: 在每月的第一天: start=“2020-08-01T00:00:00Z”; 月=时刻(开始)。格式(“MMMM”); console.log(month)/是,这是因为默认情况下,矩对象位于本地时区。因此,如果您的本地时区是UTC减去任何值,并且您创建了一个带有UTC午夜时间字符串的时刻,您将得到上个月的最后一天 要防止出现这种

为什么每月第一天获取的
MMMM
格式返回上一个月,但从每月第二天开始返回正确的月份,使用此格式
2020-08-01T00:00:00Z
?这和时区偏移有关吗?下面的例子:

在每月的第一天:

start=“2020-08-01T00:00:00Z”;
月=时刻(开始)。格式(“MMMM”);

console.log(month)/是,这是因为默认情况下,矩对象位于本地时区。因此,如果您的本地时区是UTC减去任何值,并且您创建了一个带有UTC午夜时间字符串的
时刻
,您将得到上个月的最后一天

要防止出现这种情况,您可以使用不包含时间的字符串
utc()
parseZone()
,也可以使用
矩时区
包指定时区:

start=“2020-08-01T00:00:00Z”;
月=时刻(开始)。格式(“MMMM”);
monthUTC=时刻(开始).utc()格式(“MMMM”);//或矩.utc(start).format(“MMMM”);
monthPZ=矩.parseZone(start).format(“MMMM”);
monthNoTime=力矩(“2020-08-01”)。格式(“MMMM”);
//注意:需要单独的时刻时区包
monthLA=时刻(开始).tz('America/Los_Angeles')。格式(“MMMM”);
monthSYD=时刻(开始).tz('Australia/Sydney')。格式(“MMMM”);
console.log(“默认值:,月);
console.log(“UTC:”,monthUTC);
日志(“parseZone:”,monthPZ);
日志(“没有时间:”,monthNoTime);
控制台日志(“LA:”,monthLA);
console.log(“悉尼:”,monthSYD)


这是否回答了您的问题@异端猴子这是有帮助的,但下面接受的答案回答了这个与力矩js相关的特定问题