Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
(function (m) {
/*
* PHP => moment.js
* Will take a php date format and convert it into a JS format for moment
* http://www.php.net/manual/en/function.date.php
* http://momentjs.com/docs/#/displaying/format/
*/
var formatMap = {
d: 'DD',
D: 'ddd',
j: 'D',
l: 'dddd',
N: 'E',
S: function () {
return '[' + this.format('Do').replace(/\d*/g, '') + ']';
},
w: 'd',
z: function () {
return this.format('DDD') - 1;
},
W: 'W',
F: 'MMMM',
m: 'MM',
M: 'MMM',
n: 'M',
t: function () {
return this.daysInMonth();
},
L: function () {
return this.isLeapYear() ? 1 : 0;
},
o: 'GGGG',
Y: 'YYYY',
y: 'YY',
a: 'a',
A: 'A',
B: function () {
var thisUTC = this.clone().utc(),
// Shamelessly stolen from http://javascript.about.com/library/blswatch.htm
swatch = ((thisUTC.hours() + 1) % 24) + (thisUTC.minutes() / 60) + (thisUTC.seconds() / 3600);
return Math.floor(swatch * 1000 / 24);
},
g: 'h',
G: 'H',
h: 'hh',
H: 'HH',
i: 'mm',
s: 'ss',
u: '[u]', // not sure if moment has this
e: '[e]', // moment does not have this
I: function () {
return this.isDST() ? 1 : 0;
},
O: 'ZZ',
P: 'Z',
T: '[T]', // deprecated in moment
Z: function () {
return parseInt(this.format('ZZ'), 10) * 36;
},
c: 'YYYY-MM-DD[T]HH:mm:ssZ',
r: 'ddd, DD MMM YYYY HH:mm:ss ZZ',
U: 'X'
},
formatEx = /[dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU]/g;
moment.fn.formatPHP = function (format) {
var that = this;
return this.format(format.replace(formatEx, function (phpStr) {
return typeof formatMap[phpStr] === 'function' ? formatMap[phpStr].call(that) : formatMap[phpStr];
}));
};
}(moment));
//Usage Example
//You can pass whatever date into the moment call and any php date format into the formatter.
moment(new Date()).formatPHP("examplePHPFormat");
@dottwatson

This comment has been minimized.

Copy link

dottwatson commented Dec 1, 2016

added new feature to get a moment format from php format

    moment.PHPconvertFormat=function(format){
        return format.replace(formatEx, function (phpStr) {
			return typeof formatMap[phpStr] === 'function' ? formatMap[phpStr].call(that) : formatMap[phpStr];
        })
    };

alert ( moment.PHPconvertFormat("d/m/Y") )

@wtfkeklol

This comment has been minimized.

Copy link

wtfkeklol commented Jul 20, 2017

This works perfectly, thank you so much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.