JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<pre id="output"></pre>
JavaScript
var tests = [{
date: '2018-01-01',
add: {
d: 1
}
},
{
date: '2018-01-01',
add: {
M: 1
}
},
{
date: '2018-01-01',
add: {
Y: 1
}
},
{
date: '2018-01-30',
add: {
M: 1
}
},
{
date: '2018-01-30',
add: {
M: 2
}
},
{
date: '2000-02-29',
add: {
Y: 1
}
},
{
date: '2000-02-29',
add: {
Y: 4
}
},
{
date: '2000-01-30',
add: {
d: 2
}
},
{
date: '2018-01-01',
add: {
Y: 2,
M: 3,
d: 4
}
},
{
date: '2018-01-01',
add: {
Y: 5,
M: 15,
d: 40
}
},
];
var $output = $("#output");
tests.forEach(x => console.log(x));
tests.forEach(x => $output.html($output.html() + JSON.stringify(x) + " => " + moment(x.date).add(x.add).format('Y-MM-DD') + "\n"));