0

我在 php 页面上有一个函数,旨在使用 getid3 获取视频文件的创建日期/时间。当我(当然)再次运行所有内容以确保并最终遇到一个我似乎无法弄清楚的问题时,我认为一切都运行良好并准备好将这个版本放在床上。

相关的代码是这样的:

$getID3 = new getID3;
$ThisFileInfo = $getID3->analyze($file);
if ($ThisFileInfo["quicktime"]["moov"]["subatoms"][0]["creation_time_unix"]){
    $createdate = new DateTime("@".strval($ThisFileInfo["quicktime"]["moov"]["subatoms"][0]["creation_time_unix"]));
}
else {
    $createdate = new DateTime("@".strval($ThisFileInfo["quicktime"]["moov"]["subatoms"][0]["modify_time_unix"]));
}
$createdate->setTimeZone(new DateTimeZone('America/New_York'));
//var_dump($createdate);
$createdate = $createdate->date;

当我使用这部分处理文件时,我收到一条错误消息Notice: Undefined property: DateTime::$date in … line 179(文件路径被我删除)。但是,我知道情况并非如此,因为如果我取消注释var_dump上面列出的行,我会得到 output object(DateTime)#3 (3) { ["date"]=> string(26) "2016-01-24 15:20:32.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "America/New_York" }

在我看来,它确实看起来像 DateTime 对象$createdate有一个名为 的属性$date,所以我不确定发生了什么,尽管我假设它在我的语法中。有人可以帮我解决这个问题吗?

4

1 回答 1

0

如果您不确定可以从对象的当前范围访问哪些变量,可以使用get_class_vars()

在 DateTime 对象上使用它会返回一个空数组:

var_dump(get_class_vars(get_class($datetimeobj)));

...这意味着该$date财产是私人财产。当然,您可以使用date_format()方法访问 DateTime 对象的字符串表示形式:

$dateString = date_format($dateTimeObj, 'Y-m-d H:i:s');

您可以在“日期”手册中阅读有关格式语法的更多信息。

于 2016-05-20T11:37:58.437 回答