Php 将日期转换为已使用strotime的时间戳
我正在尝试将未来7天的日期转换为时间戳,以便与数据库中的日期时间戳进行比较,以获得一些结果 此功能用于获取从今天开始的未来7天Php 将日期转换为已使用strotime的时间戳,php,date,Php,Date,我正在尝试将未来7天的日期转换为时间戳,以便与数据库中的日期时间戳进行比较,以获得一些结果 此功能用于获取从今天开始的未来7天 $next_date = date("d/m/Y", strtotime("7 day")) 输出 30/04/2014 现在,我再次在$next_date变量上运行strotime(),该变量保存接下来的7天并转换为时间戳 echo strtotime($next_date); 这是行不通的。我遵循了这个答案,很少有其他答案。是否先存储strotime的值 $t
$next_date = date("d/m/Y", strtotime("7 day"))
输出
30/04/2014
现在,我再次在$next_date变量上运行strotime(),该变量保存接下来的7天并转换为时间戳
echo strtotime($next_date);
这是行不通的。我遵循了这个答案,很少有其他答案。是否先存储strotime的值
$timestamp_in_7_days = strtotime('7 day');
$next_date = date('d/m/Y', $timestamp_in_7_days);
没有必要在unix时间戳和日期格式之间来回浪费时间。作为替代建议,您可以查看PHP的内部
DateTime()
和DateInterval()
类。它使格式之间的转换和日期/时间的加减更加容易<代码>日期间隔至少需要PHP 5.3版
例如:
// create a current DateTime
$currDate = new DateTime();
// copy the current DateTime and
// add an interval of 7 days
$nextDate = clone $currDate;
$nextDate->add(new DateInterval('P7D'));
// both objects are easily converted to timestamps
echo $currDate->getTimestamp(); // e.g: 1398296728
echo $nextDate->getTimestamp(); // e.g: 1398901528
// and both can be easily formatted in other formats
echo $currDate->format('d/m/Y'); // e.g: 24/04/2014
echo $nextDate->format('d/m/Y'); // e.g: 01/05/2014
编辑
为完整起见,下面是另一个示例,说明如何向DateTime
对象添加七天:
$now = new DateTimeImmutable();
$then = $now->modify('+7 days');
var_dump($now->format('Y-m-d'), $then->format('Y-m-d'));
收益率:
string(10) "2016-05-24"
string(10) "2016-05-31"
您还可以使用DateTime
-此用例的区别在于DateTime::modify()
将修改实例$now
,其中DateTimeImmutable::modify()
将返回一个新的DateTimeImmutable
对象-因此,如果您需要创建一个新对象,同时保留旧对象,这可能是最简洁的方法
希望这有帮助:)
确实如此。我只是想补充一句,海报上写着“它不起作用”。我猜问题在于,您制作了$next_date格式的d/m/Y,根据PHP手册:
通过查看各个组件之间的分隔符,可以消除m/d/Y或d-m-Y格式中日期的歧义:如果分隔符是斜杠(/),则假定为美式m/d/Y;而如果分隔符是破折号(-)或点(.),则假定为欧洲d-m-y格式。为了避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime::createFromFormat()。
@Kai-是的,这是正确的。他可以通过使用mktime或其他方法拆分字符串来实现,但在我看来,这是最干净的方法;)是的,如果不是你打败了我,我自己也会这么说