Date Formats

by harsh dand

JavaScript

var formatDate = function (date, format) {
    var template = format;
    var validDateFragments = [{
        name: 'month',
        values: ['mmm', 'mm', 'm']
    }, {
        name: 'year',
        values: ['yyyy', 'yy']
    }, {
        name: 'date',
        values: ['dd', 'd']
    }];

    var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];

    var params = {};
    for (var i in validDateFragments) {
        for (var j in validDateFragments[i].values) {
            if (format.indexOf(validDateFragments[i].values[j]) != -1) {
                switch (validDateFragments[i].name) {
                    case 'month':
                        template = template.replace(validDateFragments[i].values[j], 'm');
                        params.month = validDateFragments[i].values[j];
                        break;
                    case 'year':
                        params.year = validDateFragments[i].values[j];
                        template = template.replace(validDateFragments[i].values[j], 'y');
                        break;
                    case 'date':
                        params.date = validDateFragments[i].values[j];
                        template = template.replace(validDateFragments[i].values[j], 'd');
                        break;
                }
                break;
            }
        }
    }

    var formattedDate = template;

    for (var i in params) {
        if (params.hasOwnProperty(i)) {
            var str;
            var type;

            switch (params[i]) {
                case 'mmm':
                    str = months[date.getMonth()];
                    type = 'm';
                    break;
                case 'mm':
                    str = date.getMonth() + 1;
                    str = (str.toString().length == 1) ? '0' + str : str;
                    type = 'm';
                    break;
                case 'm':
                    str = date.getMonth() + 1;
         ...