Javascript Momentjs节省未来一个月

Javascript Momentjs节省未来一个月,javascript,node.js,momentjs,Javascript,Node.js,Momentjs,我正在使用momentjs,我收到了正确的对象,但当我尝试保存它时,会提前一个月保存,我尝试减去其他月份运行良好的月份,但当我尝试保存“十二月”时,我得到了一个错误,“无效日期”,显然是因为它尝试保存第13个月,这是不存在的 以相同方法接收对象 Object { day: "12", month: "01", year: "2017", formatted: "12-01-2017", momentObj: Object } Object { uid_date: "killerengel_12

我正在使用momentjs,我收到了正确的对象,但当我尝试保存它时,会提前一个月保存,我尝试减去其他月份运行良好的月份,但当我尝试保存“十二月”时,我得到了一个错误,“无效日期”,显然是因为它尝试保存第13个月,这是不存在的

以相同方法接收对象

Object { day: "12", month: "01", year: "2017", formatted: "12-01-2017", momentObj: Object }
Object { uid_date: "killerengel_12-02-2017", name: "task1" date: "12-02-2017"}
当我尝试用同样的方法保存时

Object { day: "12", month: "01", year: "2017", formatted: "12-01-2017", momentObj: Object }
Object { uid_date: "killerengel_12-02-2017", name: "task1" date: "12-02-2017"}
我用来保存的内容:

let chosenDate = moment(task.date).utc().format('DD-MM-YYYY'); //this gives me a month ahead

Object { day: "30", month: "12", year: "2017", formatted: "30-12-2017", momentObj: Object } 

Object { uid_date: "killerengel_Invalid date", name: "task2", date: "Invalid date" }

@杜威德曼是对的。对于JavaScript Date()函数,一月是0,十二月是11。这类似于数组从0开始索引的事实。你认为Moment.js的工作原理是一样的吗

var jan=new Date().setMonth(0);//1月不是1号。
console.log(新日期(一月));//返回2017-01。。。
var dec=新日期().setMonth(11);//12月不是12日。

console.log(新日期(12月));//返回2017-12…
@deweyredman是对的。对于JavaScript Date()函数,一月是0,十二月是11。这类似于数组从0开始索引的事实。你认为Moment.js的工作原理是一样的吗

var jan=new Date().setMonth(0);//1月不是1号。
console.log(新日期(一月));//返回2017-01。。。
var dec=新日期().setMonth(11);//12月不是12日。

console.log(新日期(12月));//返回2017-12…
不确定momentjs是否与本机javascript匹配,但在js中执行时间/日期的一个臭名昭著的缺陷是,月份是以零为基础的,而其他一切都是以一为基础的任务。日期是什么?你在momentJS中使用本地化设置吗?@deweyredman我觉得很愚蠢,我使用了格式化设置,但正如你所说,它是基于零的,所以当我尝试使用日期字符串和momentJS进行计算时,我可能会发现一些其他错误(例如,知道哪个日期在前面,但我可以操纵字符串来实现这一点)。顺便说一句,我使用的是jkuri/ng2 datepicker,它不是基于零的,我认为错误是从那个时刻开始的,所以我会问他它是否不会呈现其他错误。无论如何,我应该删除这个问题,还是等待和主持人关闭它?我不知道我是新来的,这是我的第一个问题。@haxxxton task.date是我试图在Firebase上保存日期的第一个收到的对象。momentjs非常擅长从字符串中检测日期。如果你可以用“30-01-2017”这样的字眼来形容,我会知道在这种情况下,01代表1月份。最坏情况下的momentjs允许您使用其第二个参数ie
moment(“30-01-2017”,“DD-MM-YYYY”)指定输入字符串的格式(以处理美国与英国的日期排序)
如果可以连接对象值,则不需要调整任何内容来获得正确识别月份的时刻:)不确定momentjs是否与本机javascript匹配,但在js中执行时间/日期的一个臭名昭著的缺陷是,月份是以零为基础的,而其他一切都是以一为基础的任务。日期是什么?你在momentJS中使用本地化设置吗?@deweyredman我觉得很愚蠢,我使用了格式化设置,但正如你所说,它是基于零的,所以当我尝试使用日期字符串和momentJS进行计算时,我可能会发现一些其他错误(例如,知道哪个日期在前面,但我可以操纵字符串来实现这一点)。顺便说一句,我使用的是jkuri/ng2 datepicker,它不是基于零的,我认为错误是从那个时刻开始的,所以我会问他它是否不会呈现其他错误。无论如何,我应该删除这个问题,还是等待和主持人关闭它?我不知道我是新来的,这是我的第一个问题。@haxxxton task.date是我试图在Firebase上保存日期的第一个收到的对象。momentjs非常擅长从字符串中检测日期。如果你可以用“30-01-2017”这样的字眼来形容,我会知道在这种情况下,01代表1月份。最坏情况下的momentjs允许您使用其第二个参数指定输入字符串的格式(以处理美国与英国的日期排序),即
moment(“30-01-2017”,“DD-MM-YYYY”)
如果您可以连接对象值,则无需调整任何内容即可获得正确识别月份的moment:)您是正确的,请参阅:——请注意,与时刻(数组)和新日期(年、月、日)一样,月份的索引为0。如果正确,请参阅:-“请注意,与时刻(数组)和新日期(年、月、日)一样,月份的索引为0。”