Moment JS, UTC to Local time

by Kyle Anderson

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.5.1/moment.min.js"></script>
<p>
    <label for="start_time">Start Time</label>
    <br>
    <input id="start_time" name="start_time" type="text" value="2015-09-30 00:00">
</p>
<p>
    <label for="end_time">End Time</label>
    <br>
    <input id="end_time" name="end_time" type="text" value="2015-10-01 15:53">
</p>
<p>
    <label for="duration">Duration</label>
    <br>
    <input id="duration" name="duration" type="text">
</p>

JavaScript

$(document).ready(function () {
    if ($('#duration').val() === '') {
        updateDuration($('#start_time').val(), $('#end_time').val());
    }

    $('#start_time').on('change keyup', function () {
        updateDuration($('#start_time').val(), $('#end_time').val());
    });

    $('#end_time').on('change keyup', function () {
        updateDuration($('#start_time').val(), $('#end_time').val());
    });

    function updateDuration(startTime, endTime) {
        var ms = moment(endTime, 'YYYY/MM/DD HH:mm:ss').diff(moment(startTime, 'YYYY/MM/DD HH:mm:ss')),
            dt = moment.duration(ms),
            h = Math.floor(dt.asHours()),
            m = moment.utc(ms).format('mm');

        $('#duration').val(h + ' hours, ' + m + ' minutes');
    }
});