gpt4 book ai didi

php - Zend_Date 和 ISO_8601 格式的问题

转载 作者:行者123 更新时间:2023-12-04 07:02:06 26 4
gpt4 key购买 nike

坦率地说,我很困惑。谁能告诉我为什么我会收到此代码的失败消息?

$date = Zend_Date::now();
$date = $date->getIso();

if(Zend_Date::isDate($date, Zend_Date::ISO_8601)) {
print('success');
} else {
print('failure');
}

exit;

如果我只传入一个 Zend_Date 对象,它也会失败。

更新:

初始 $date 对象的 var_dump 如下所示:

object(Zend_Date)#107 (8) { ["_locale:private"]=> string(5) "en_US"["_fractional:private"]=> int(0) ["_precision:private"]=> int( 3) ["_unixTimestamp:private"]=> int(1257508100) ["_timezone:private"]=> string(14) "美国/丹佛"["_offset:private"]=> int(25200) ["_syncronised:私有(private)的"]=> int(0) ["_dst:protected"]=> bool(true) }

调用 $date->getIso() 后 $date 字符串的 var_dump 如下所示:

字符串(25)“2009-11-06T04:48:20-07:00”

我在 PHP 5.2.8 上使用 ZF 1.9.5。如果这有所作为,我也在使用 XAMPP for Windows。

最佳答案

我在 Ubuntu 上运行 ZF 1.9.4 和 PHP 5.2.10,并且能够重现您遇到的完全相同的问题。作为好奇的类型,我做了一点挖掘。在 isDate 的代码中,首先调用伴随类 Zend_Locale_Format 中的 getDate。这是一个 try-catch 循环,所以在 catch 部分,我让它将异常转储到 stdout。这是异常转储向我展示的内容:

带有消息“无法解析日期”的异常“Zend_Locale_Exception”
'2009-11-06T04:26:46-08:00' 在/usr/share/php/libzend-framework-php/Zend/Locale/Format.php:995 中使用 'dd mm yy' (d y)'
堆栈跟踪:
#0/usr/share/php/libzend-framework-php/Zend/Locale/Format.php(1116): Zend_Locale_Format::_parseDate('2009-11-06T04:2...', 数组)
#1/usr/share/php/libzend-framework-php/Zend/Date.php(4583): Zend_Locale_Format::getDate('2009-11-06T04:2...', 数组)
#2 {censored}/testbed/test.php(26): Zend_Date::isDate('2009-11-06T04:2...', 'c')
#3 {主要}

对这个异常做一个 var_dump 更能说明那些不透明的数组。它们中的每一个都包含以下内容:

数组(4){
[“地区”]=>
字符串(5)“en_US”
[“日期格式”]=>
字符串(8)“dd mm yy”
[“格式类型”]=>
字符串(3)“iso”
[“修复日期”]=>
bool (假)
}

所以, date_format 看起来根本不对。它应该是“YYYYMMDD'T'hh:mm:ssP”或类似的东西,用 PHP 日期格式化术语(我引用了 T,因为它是文字 'T' 而不是时区缩写)。当然,PHP 只是将其缩写为“c”。

奇怪的。那么世界上哪里有这种日期格式呢?从 _getLocalizedToken:

protected 静态函数 _getLocalizedToken($token, $locale)
{
开关($ token ){
案例自我::ISO_8601:
返回“dd mm yy”;
休息;
...

鉴于 ISO_8601 产生的输出,该格式看起来完全错误。

我可能会与适当的 Zend 列表中的人员核对一下,但乍一看,这看起来像是值得报告的错误报告。也许他们只是不支持检查这种特定类型的日期字符串?

关于php - Zend_Date 和 ISO_8601 格式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1686963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com