Hi, you should really only use moment as the last node and for presentation purposes. Any adjustements and offsets should be made to the Date object (or timestamp) before passing into the moment node to present a nice format (even then the moment node isnt necessary).
e.g...
demo flow...
[{"id":"3a02a4d6.5a737c","type":"inject","z":"64ce1d00.d049e4","name":"now + global.minuteOffset","props":[{"p":"topic","vt":"str"},{"p":"payload"},{"p":"interval","v":"minute","vt":"str"},{"p":"number","v":"minuteOffset","vt":"global"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":190,"y":660,"wires":[["976589bf.3f3938"]]},{"id":"207eac78.4382c4","type":"inject","z":"64ce1d00.d049e4","name":"add 3 month","props":[{"p":"topic","vt":"str"},{"p":"payload"},{"p":"interval","v":"month","vt":"str"},{"p":"number","v":"3","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":700,"wires":[["976589bf.3f3938"]]},{"id":"474051ee.d167a","type":"debug","z":"64ce1d00.d049e4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":350,"y":740,"wires":[]},{"id":"9f98918d.8ac1b","type":"inject","z":"64ce1d00.d049e4","name":"add 1 year","props":[{"p":"topic","vt":"str"},{"p":"payload"},{"p":"interval","v":"year","vt":"str"},{"p":"number","v":"1","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":740,"wires":[["976589bf.3f3938"]]},{"id":"976589bf.3f3938","type":"function","z":"64ce1d00.d049e4","name":"dateAdd","func":"function dateAdd(date, interval, number) {\n var origDate = new Date(date);\n var ret = new Date(date); \n var checkRollover = function () { if (ret.getDate() != origDate.getDate()) ret.setDate(0); };\n switch (String(interval).toLowerCase()) {\n case 'year': ret.setFullYear(ret.getFullYear() + number); checkRollover(); break;\n case 'quarter': ret.setMonth(ret.getMonth() + 3 * number); checkRollover(); break;\n case 'month': ret.setMonth(ret.getMonth() + number); checkRollover(); break;\n case 'week': ret.setDate(ret.getDate() + 7 * number); break;\n case 'day': ret.setDate(ret.getDate() + number); break;\n case 'hour': ret.setTime(ret.getTime() + number * 3600000); break;\n case 'minute': ret.setTime(ret.getTime() + number * 60000); break;\n case 'second': ret.setTime(ret.getTime() + number * 1000); break;\n default: ret = undefined; break;\n }\n return ret;\n}\nmsg.payload = dateAdd(msg.payload, msg.interval, msg.number)\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":340,"y":700,"wires":[["474051ee.d167a"]]},{"id":"c74f5d14.80622","type":"inject","z":"64ce1d00.d049e4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":580,"wires":[["102592dc.7fca2d"]]},{"id":"102592dc.7fca2d","type":"change","z":"64ce1d00.d049e4","name":"set some globals","rules":[{"t":"set","p":"minuteOffset","pt":"global","to":"10","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":580,"wires":[[]]}]
e.g 2
[{"id":"3a02a4d6.5a737c","type":"inject","z":"64ce1d00.d049e4","name":"now + global.minuteOffset","props":[{"p":"topic","vt":"str"},{"p":"payload"},{"p":"interval","v":"minute","vt":"str"},{"p":"number","v":"minuteOffset","vt":"global"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":190,"y":660,"wires":[["72c1fdde.c18c94"]]},{"id":"474051ee.d167a","type":"debug","z":"64ce1d00.d049e4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":710,"y":720,"wires":[]},{"id":"c74f5d14.80622","type":"inject","z":"64ce1d00.d049e4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":620,"wires":[["102592dc.7fca2d"]]},{"id":"102592dc.7fca2d","type":"change","z":"64ce1d00.d049e4","name":"set global.minuteOffset to 15","rules":[{"t":"set","p":"minuteOffset","pt":"global","to":"15","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":620,"wires":[[]]},{"id":"72c1fdde.c18c94","type":"function","z":"64ce1d00.d049e4","name":"dateAdd","func":"function dateAdd(date, interval, number) {\n var origDate = new Date(date);\n var ret = new Date(date); \n var checkRollover = function () { if (ret.getDate() != origDate.getDate()) ret.setDate(0); };\n switch (String(interval).toLowerCase()) {\n case 'year': ret.setFullYear(ret.getFullYear() + number); checkRollover(); break;\n case 'quarter': ret.setMonth(ret.getMonth() + 3 * number); checkRollover(); break;\n case 'month': ret.setMonth(ret.getMonth() + number); checkRollover(); break;\n case 'week': ret.setDate(ret.getDate() + 7 * number); break;\n case 'day': ret.setDate(ret.getDate() + number); break;\n case 'hour': ret.setTime(ret.getTime() + number * 3600000); break;\n case 'minute': ret.setTime(ret.getTime() + number * 60000); break;\n case 'second': ret.setTime(ret.getTime() + number * 1000); break;\n default: ret = undefined; break;\n }\n return ret;\n}\nmsg.payload = dateAdd(msg.payload, msg.interval, msg.number)\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":400,"y":660,"wires":[["6c64b591.f2b0fc","2942f8d.1e5fb08"]]},{"id":"6c64b591.f2b0fc","type":"change","z":"64ce1d00.d049e4","name":"add 5 year","rules":[{"t":"set","p":"interval","pt":"msg","to":"year","tot":"str"},{"t":"set","p":"number","pt":"msg","to":"5","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":560,"y":660,"wires":[["777b3bf8.a77da4"]]},{"id":"777b3bf8.a77da4","type":"function","z":"64ce1d00.d049e4","name":"dateAdd","func":"function dateAdd(date, interval, number) {\n var origDate = new Date(date);\n var ret = new Date(date); \n var checkRollover = function () { if (ret.getDate() != origDate.getDate()) ret.setDate(0); };\n switch (String(interval).toLowerCase()) {\n case 'year': ret.setFullYear(ret.getFullYear() + number); checkRollover(); break;\n case 'quarter': ret.setMonth(ret.getMonth() + 3 * number); checkRollover(); break;\n case 'month': ret.setMonth(ret.getMonth() + number); checkRollover(); break;\n case 'week': ret.setDate(ret.getDate() + 7 * number); break;\n case 'day': ret.setDate(ret.getDate() + number); break;\n case 'hour': ret.setTime(ret.getTime() + number * 3600000); break;\n case 'minute': ret.setTime(ret.getTime() + number * 60000); break;\n case 'second': ret.setTime(ret.getTime() + number * 1000); break;\n default: ret = undefined; break;\n }\n return ret;\n}\nmsg.payload = dateAdd(msg.payload, msg.interval, msg.number)\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":720,"y":660,"wires":[["474051ee.d167a"]]},{"id":"2942f8d.1e5fb08","type":"debug","z":"64ce1d00.d049e4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":450,"y":720,"wires":[]}]