Last active
January 2, 2019 13:49
-
-
Save w-jerome/307acceb2b8200502de294f50eade719 to your computer and use it in GitHub Desktop.
Javascript, PHP — Format date by language
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function formatDateText(date_start, date_end) { | |
date_start = (date_start) ? new Date(date_start) : null; | |
date_end = (date_end) ? new Date(date_end) : null; | |
var date_text = ''; | |
var lang = 'fr-FR'; | |
if (!date_end) { | |
date_text = date_start.toLocaleDateString(lang, { | |
year: 'numeric', | |
month: 'long', | |
day: 'numeric', | |
}); | |
} else { | |
if (date_start.getFullYear() !== date_end.getFullYear()) { | |
// exemple : 18 décembre 2018 au 20 janvier 2019 | |
date_text += 'Du '; | |
date_text += date_start.toLocaleDateString(lang, { | |
year: 'numeric', | |
month: 'long', | |
day: 'numeric', | |
}); | |
date_text += ' au '; | |
date_text += date_end.toLocaleDateString(lang, { | |
year: 'numeric', | |
month: 'long', | |
day: 'numeric', | |
}); | |
} else if (date_start.getMonth() !== date_end.getMonth()) { | |
// exemple : 25 janvier au 2 février 2018 | |
date_text += 'Du '; | |
date_text += date_start.toLocaleDateString(lang, { | |
month: 'long', | |
day: 'numeric', | |
}); | |
date_text += ' au '; | |
date_text += date_end.toLocaleDateString(lang, { | |
year: 'numeric', | |
month: 'long', | |
day: 'numeric', | |
}); | |
} else if (date_start.getDate() !== date_end.getDate()) { | |
// exemple : 18 au 20 janvier 2018 | |
date_text += 'Du '; | |
date_text += date_start.toLocaleDateString(lang, { | |
day: 'numeric', | |
}); | |
date_text += ' au '; | |
date_text += date_end.toLocaleDateString(lang, { | |
year: 'numeric', | |
month: 'long', | |
day: 'numeric', | |
}); | |
} else { | |
date_text += date_start.toLocaleDateString(lang, { | |
year: 'numeric', | |
month: 'long', | |
day: 'numeric', | |
}); | |
} | |
} | |
return date_text; | |
} | |
console.log(formatDateText('2018-05-25', '2018-05-27')); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
setlocale(LC_TIME, 'fr_FR'); | |
function DisplayDate($start, $end = '') { | |
if (!$end) { | |
$end = $start; | |
} | |
$start = strtotime($start); | |
$end = strtotime($end); | |
$_day_var = (PHP_OS === 'WINNT') ? '%#d' : '%e'; | |
$date = ''; | |
if (strftime('%Y-%m-%d', $start) !== strftime('%Y-%m-%d', $end)) { | |
$date .= 'Du '; | |
if (strftime('%Y', $start) !== strftime('%Y', $end)) { | |
$date .= strftime($_day_var.' %B %Y', $start); | |
} else if (strftime('%m', $start) !== strftime('%m', $end)) { | |
$date .= strftime($_day_var.' %B', $start); | |
} else if (strftime('%d', $start) !== strftime('%d', $end)) { | |
$date .= strftime($_day_var, $start); | |
} | |
$date .= ' au '; | |
} | |
$date .= strftime($_day_var.' %B %Y', $end); | |
return $date; | |
} | |
echo DisplayDate('2018-01-01')."<br>"; | |
echo DisplayDate('2018-01-01', '2018-01-03')."<br>"; | |
echo DisplayDate('2018-01-01', '2018-02-10')."<br>"; | |
echo DisplayDate('2018-01-01', '2019-03-03')."<br>"; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment