(function(undefined){ var moment; if (typeof require !== 'undefined'){ moment = require('moment'); }else{ moment = this.moment; } var replacements = { 'a': 'ddd', 'A': 'dddd', 'b': 'MMM', 'B': 'MMMM', //'c': //%c is defined too vaguely 'd': 'DD', //'f': JS have no support for microseconds and moment.js have no support for milliseconds 'H': 'HH', 'I': 'hh', 'j': 'DDDD', 'm': 'MM', 'M': 'mm', 'p': 'A', 'S': 'ss', 'U': 'ww',//ww is for Sunday-based week 'w': 'd', //'W': 'ww',//%W is weeknumber for weeks starting from Monday and it is not implemented in moment.js //'x': //'X': //%x and %X are defined too vaguely to be implemented 'y': 'YY', 'Y': 'YYYY', 'z': 'ZZ', //'Z': 'z', - moment.js does not support timezone names '%': '%' }; var convert_format = function(format){ var moment_format = '', directive_index = 0, replacement, unformatted; while (format.indexOf('%') !== -1){ directive_index = format.indexOf('%') + 1; replacement = replacements[format[directive_index]]; unformatted = format.substr(0, directive_index-1); if (unformatted.length){ unformatted = '[' + unformatted.replace(/(\[|\])/g, '\\$&') +']'; } moment_format += unformatted + (replacement ? replacement : format[directive_index]); format = format.substr(directive_index+1); } return moment_format; }; moment.fn.strftime = function(format){ var moment_format = convert_format(format); return moment.fn.format.call(this, moment_format); }; moment.fn.strptime = function(input, format){ var moment_format; if (typeof format == 'string'){ moment_format = convert_format(format); }else{ moment_format = []; for(var i=0; i