我有一个PHP脚本,它将格式为2014-10-31T11:28:02+00:00
的时间戳字符串传递给另一个变量。我怎么能减去一个小时?
例如:
$currDate = $userDate - strtotime('-1 hour');
$userDate
包含2014-10-31T11:28:02+00:00
。
感谢。
答案 0 :(得分:1)
试试这个:
$str = '2014-10-31T11:28:02+00:00';
$dt = DateTime::createFromFormat(DateTime::ISO8601, $str);
$dt->modify("-1 hours");
echo $dt->format(DateTime::ISO8601);
答案 1 :(得分:1)
strtotime()
用于将时间戳转换为以秒为单位的时间,类似于time()
为您提供的输出。
也就是说,代码strtotime("-1 hour")
将不起作用。
然而,您可以将用户时间戳转换为以秒为单位的时间,然后从中减去一小时,就像这样
$currDate = strtotime($userDate) - 3600; // 1 hour has 3600 seconds
然后通过执行类似的操作将$currDate
转换回时间戳
$finalDate = date("YYYY-mm-dd HH:ss", $currDate); // adjust the format to your needs
使用date()
进行格式化的方式可以找到here。
希望这很有用。
答案 2 :(得分:0)
您可以使用:
$currDate = strtotime($userDate) - 3600;
如果您想保持$userDate
的格式,请执行以下操作:
$newUserDate = date("c", strtotime($userDate) - 3600);
答案 3 :(得分:0)
使用DateTime
课程。
DateTime
对象
$date = DateTime::createFromFormat('Y-m-d\TG:i:sP', '2014-10-31T11:28:02+00:00');
$date->sub(new DateInterval('PT1H'));
echo $date->format('Y-m-d\TG:i:sP');
答案 4 :(得分:0)
我认为问题在于日期格式。日期和时间戳之间必须有空格。以下作品很有效。
$userDate='2014-10-31 T11:28:02+00:00';
echo $currDate = $d= date('d-m-Y',strtotime($userDate. " -1 hour"));
答案 5 :(得分:0)
$currDate = date('Y-m-d', strtotime($userDate .'-1 hour'));
尝试这个........... in" Y-m-d"你添加你的格式如" y-m-d H:i:s"