我有一个PHP脚本,它将格式为2014-10-31T11:28:02+00:00
的时间戳字符串传递给另一个变量。我怎么能从这里减去一小时?更改时间-1小时
例如:
$currDate = $userDate - strtotime('-1 hour');
凡$userDate
包含2014-10-31T11:28:02+00:00
。
谢谢。
我有一个PHP脚本,它将格式为2014-10-31T11:28:02+00:00
的时间戳字符串传递给另一个变量。我怎么能从这里减去一小时?更改时间-1小时
例如:
$currDate = $userDate - strtotime('-1 hour');
凡$userDate
包含2014-10-31T11:28:02+00:00
。
谢谢。
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。
希望有帮助。
只需注意: 'date()'的所有可用格式字符的列表,请参考[官方PHP手册文档](http://php.net/date)。 – 2014-10-31 11:52:10
你可以使用:
$currDate = strtotime($userDate) - 3600;
如果你想保留$userDate
的格式,那么这样做:
$newUserDate = date("c", strtotime($userDate) - 3600);
使用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');
日期采用ISO 8601格式,所以您不需要明确指定格式,因为PHP的日期解析器已经识别了它。你可以简单地写:'$ date = new DateTime($ userDate);'。对于格式化,可以使用['$ date-> format('c');'](http://php.net/date)。 – 2014-10-31 11:50:57
您只能使用'c'格式输出ISO 8601日期。另外,由于输入日期是ISO 8601日期,所以不需要格式化输入,您可以直接输入新日期时间('2014-10-31T11:28:02 + 00:00')' – AlexL 2014-10-31 11:51:27
试试这个:
$str = '2014-10-31T11:28:02+00:00';
$dt = DateTime::createFromFormat(DateTime::ISO8601, $str);
$dt->modify("-1 hours");
echo $dt->format(DateTime::ISO8601);
我认为问题是日期格式。日期和时间戳之间必须有空格。以下作品完美。
$userDate='2014-10-31 T11:28:02+00:00';
echo $currDate = $d= date('d-m-Y',strtotime($userDate. " -1 hour"));
$currDate = date('Y-m-d', strtotime($userDate .'-1 hour'));
试试这个...........在 “年月日” 你把你喜欢的格式为 “YMD H:我:■”
你尝试之前,在这里搜索问? – 2014-10-31 11:44:28
http:// php。net/datetime - DateTime类是一件好事。 – 2014-10-31 11:45:43
................. + 1 – 2014-10-31 12:06:54