2

以正确格式转换日期时遇到问题。我以这种格式从 Facebook API 获得时间:2013-08-23T09:00:00 然后$fbdate = date('2013-08-23T09:00:00');

当我echo $fbdate,它返回2013-08-25UTC05:00:00

然后我尝试了:

$datum = date("d.m.Y",$fbdate);
$uhrzeit = date("H:i",$fbdate);

提取日期和时间,但它总是返回: 01.01.1970for$datum00:33for $uhrzeit

4

6 回答 6

8

您应该使用strtotime()将日期字符串解析为 UNIX 时间戳:

$fbdate = strtotime('2013-08-23T09:00:00');

$datum = date('d.m.Y', $fbdate);
$uhrzeit = date('H:i', $fbdate);
于 2013-08-12T13:24:51.190 回答
5

尝试使用DateTime类:

$fbdate = '2013-08-23T09:00:00';
$date = DateTime::createFromFormat('Y-m-d\TH:i:s', $fbdate);

$datum = $date->format('d.m.Y');
$uhrzeit = $date->format('H:i');

echo $datum;
echo $uhrzeit;
于 2013-08-12T13:27:11.587 回答
1
$datum = date("d.m.Y",strtotime($fbdate));
$uhrzeit = date("H:i",strtotime($fbdate));

PHP中的date函数旨在将amicrotime转换为日期,因此您需要microtime先将字符串日期转换为s。

于 2013-08-12T13:24:28.713 回答
1

你试过这个吗?您应该strtotime()在使用该date功能时使用。

$datum = date("d.m.Y", strtotime($fbdate));
$uhrzeit = date("H:i", strtotime($fbdate));
于 2013-08-12T13:24:33.560 回答
1

使用strtotime()

$a = date("Y-M-d", strtotime($datum)); 
echo $a.$uhrzeit;

更多信息http://php.net/manual/en/function.strtotime.php

于 2013-08-12T13:28:22.607 回答
1

我不是使用时间戳的忠实粉丝。

我为解决这个问题所做的是:

$updatedDate = new DateTime(
   preg_replace('/^(.*)\+0000$/', '$1', $fbUser->getProperty("updated_time")),
   new DateTimeZone("UTC")
);

它切断 +0000 部分并创建具有明确 UTC 时区的 DateTime 对象。

于 2015-05-10T12:41:02.073 回答