вот полезная функция, которую я имею в своем решении
public static function formatTime($time, $timezone)
{
$timezone = new \DateTimeZone($timezone);
$time = $time->setTimezone($timezone);
return \Locale::getDefault() == 'fr' ? date('H:i', $time->getTimestamp() + $time->getOffset()) : date('g:i a', $time->getTimestamp() + $time->getOffset());
}
Я храню свои даты в UTC для своих предметов, и контейнер этих предметов имеет определенный часовой пояс. С помощью этой функции я применяю часовой пояс ко всем своим элементам.
Теперь мне нужно «перевести» эту функцию в JS, выполняющую точно так же (на самом деле, мои элементы загружаются PHP, но затем новые элементы поступают непосредственно из JS, и необходимо самому применить эту же функцию в JS).
В настоящее время у меня есть этот (предыдущий, без учета часового пояса, к сожалению):
Twig.setFunction('format_time', function(value) {
// /5144653/razbor-daty-javascript-na-iphone
var arr = value.date.split(/[- :]/);
var d = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], arr[5]);
{% if app.request.getLocale() == "fr" %}
return (d.getHours() < 10 ? '0' + d.getHours() : d.getHours()) + ':' + (d.getMinutes() < 10 ? '0' + d.getMinutes() : d.getMinutes());
{% else %}
if (d.getHours() >= 12) {
var hour = d.getHours() - 12;
hour = hour < 10 ? '0' + hour : hour;
var a = 'pm';
} else {
var hour = d.getHours();
hour = hour < 10 ? '0' + hour : hour;
var a = 'am';
}
return hour + ':' + (d.getMinutes() < 10 ? '0' + d.getMinutes() : d.getMinutes()) + ' ' + a;
{% endif %}
});
Вы не представляете, как легко реализовать введение часового пояса в JS, передав строку 'America / New_York' или 'Europe / Paris' во втором аргументе?
Большое спасибо !!