Skip to content

Instantly share code, notes, and snippets.

@w-jerome
Last active January 2, 2019 13:49
Show Gist options
  • Save w-jerome/307acceb2b8200502de294f50eade719 to your computer and use it in GitHub Desktop.
Save w-jerome/307acceb2b8200502de294f50eade719 to your computer and use it in GitHub Desktop.
Javascript, PHP — Format date by language
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'));
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