我有一个脚本,可以告诉我twitch上的某个流已经存在了多长时间。该脚本有效,但输出错误。也许我在时间格式上犯了一些错误?
我得到的created_at
值看起来像2016-08-13T16:05:30Z
,
所以,如果我计算今天的差异($heute
),我应该在0天,6小时,13分钟左右,但我收到的输出是12 Tage(Days),21 Stunden(Hours),13 Minuten(Minutes)
例如,我通过将$_GET['channel']
设置为lirik
来使用此JSON:https://api.twitch.tv/kraken/streams/lirik。
这是我目前的代码:
$url = "https://api.twitch.tv/kraken/streams/" . $_GET['channel'];
$result = file_get_contents($url);
$result = json_decode($result, true);
$creationdate = new DateTime(date('Y-m-d H:i:s',strtotime($result["created_at"])));
$heute = new DateTime(date('Y-m-d H:i:s'));
$diff = $creationdate->diff($heute);
if($diff->d > 0) {
$f = '%d Tage, %H Stunden, %i Minuten';
} elseif($diff->H > 0) {
$f = '%H Stunden, %i Minuten';
} else {
$f = '%i Minuten';
}
echo $diff->format($f);
答案 0 :(得分:1)
如果$result["created_at"]
未设置,strtotime
将返回UNIX纪元(1970-01-01 00:00:00
)。
自1970年1月1日午夜起,目前为46年,7个月,<强> 12天,21小时,21分钟。
这是因为API没有在数组的根处返回created_at
元素,而是在stream
子数组中。
如果启用错误报告,这应该是显而易见的。您将收到未定义索引:created_at 错误消息。然后,您可以var_dump($result);
查看实际返回的内容。
您还有一个错误:DateInterval
没有H
属性,而且h
。
$url = "https://api.twitch.tv/kraken/streams/" . $_GET['channel'];;
$result = file_get_contents($url);
$result = json_decode($result, true);
$creationdate = new DateTime($result["stream"]["created_at"]);
$heute = new DateTime();
$diff = $creationdate->diff($heute);
if($diff->d > 0) {
$f = '%d Tage, %H Stunden, %i Minuten';
} elseif($diff->h > 0) {
$f = '%H Stunden, %i Minuten';
} else {
$f = '%i Minuten';
}
echo $diff->format($f);