使用Zend语言环境进行时间转换

时间:2011-07-15 15:30:33

标签: zend-framework timezone zend-locale

有没有办法使用Zend Locale转换时间,例如17:00到下午5:00?

我已经在文档中尝试了这个方法(它有一个拼写错误),但它不起作用。它使用'dd.MM.yyyy'(M<> y)'

给出错误'无法解析日期'13:44:42'
$locale = new Zend_Locale('de_AT');
if (Zend_Locale_Format::getTime('13:44:42',
                            array('date_format' =>
                                      Zend_Locale_Format::STANDARD,
                                  'locale' => $locale))) {
    print "time";
} else {
    print "not a time";
}

然后我尝试了一个2步法,首先获取当前语言环境的时间格式,然后在getTime函数中使用它。

$locale = new Zend_Locale('en_US');
$tf = Zend_Locale_Format::getTimeFormat($locale);
$test = Zend_Locale_Format::getTime('17:00', array('date_format' => $tf, 'locale' => $locale));

这会返回一个结果,但只是让我回复了我的内容

array('date_format'=>'h:mm:ss a', 'locale'=>'en_US', 'hour'=>'17', 'minute'=>'00')

是否有什么东西可以将时间转换为我正在尝试将其解析为的实际区域设置?

1 个答案:

答案 0 :(得分:0)

您需要将Zend_Date与区域设置一起使用才能获得所需格式的日期。

$date    = new Zend_Date(); // Default ISO format type & en_US
// Set the time and pass the format I am using to set the time
$date->setTime('17:00:00', 'HH:mm:ss'); 
echo $date; // Jul 15, 2011 5:00:00 PM

修改

有关如何将Zend_LocaleZend_Date

一起使用的详情
$locale = new Zend_Locale('de_AT');
echo  $date->toString(Zend_Locale_Format::getTimeFormat($locale)) ; // 17:00:00
$locale = new Zend_Locale('en_US');
echo  $date->toString(Zend_Locale_Format::getTimeFormat($locale)) ; // 5:00:00 PM