【发布时间】:2012-04-03 17:18:38
【问题描述】:
这是我的解决方案中的一个有用功能
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) {
// http://stackoverflow.com/questions/5324178/javascript-date-parsing-on-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 %}
});
您不知道如何通过在第二个参数中传递字符串“America/New_York”或“Europe/Paris”在 JS 中轻松实现时区 gestion?
非常感谢!!
【问题讨论】:
标签: php javascript datetime date timezone