JSFiddle - React, Tailwind, and code Playground

by dcdruck

HTML

<div id="output" style="border:1px solid gray;width:400px;min-height:100px;margin:0.5em;padding:0.25em;"></div>

JavaScript

var output = document.getElementById('output');

var dateFormat = 'yyyy/mm/dd';
var date = '2012/07/31';
var y = parseInt(date.replace(/^([0-9]+)\/[0-9]+\/[0-9]+$/, '$1'));
var m = parseInt(date.replace(/^[0-9]+\/([0-9]+)\/[0-9]+$/, '$1'));
var d = parseInt(date.replace(/^[0-9]+\/[0-9]+\/([0-9]+)$/, '$1'));
output.innerHTML = '<p>y=' + y + '<br>m=' + m + '<br>d=' + d + '</p>';
addMonths(2);
function addMonths(numMonths) {
    try {
        var y = parseInt(date.replace(/^([0-9]+)\/[0-9]+\/[0-9]+$/, '$1'));
        var m = parseInt(date.replace(/^[0-9]+\/([0-9]+)\/[0-9]+$/, '$1'));
        var d = parseInt(date.replace(/^[0-9]+\/[0-9]+\/([0-9]+)$/, '$1'));
        
        m += numMonths;
        if (m > 12) {
            y += 1;
            m -= 12;
        }
        
        switch (m) {
            case 2:
                if (d > 28) {
                    m = 3;
                    d = 1;
                }
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                if (d > 30) {
                    m += 1;
                    d = 1;
                }
                break;
        }
        output.innerHTML += '<p>y=' + y + '<br>m=' + m + '<br>d=' + d + '</p>';
    } catch (ex) {
        console.log(ex);
    }
}