向datetime添加可变字符串,例如。 2周
问题描述:
是否可以在PHP中为日期时间添加一个像“2天,2周甚至4小时”这样的可变字符串。向datetime添加可变字符串,例如。 2周
例如:
我有一个日期时间是这样的:“2017年8月2日12:00” 现在用户选择如“4小时或2周” 现在用户选择的时间间隔应被添加到日期时间。
这可能吗?
我不想整个代码,也许只是一个建议如何做到这一点。
感谢
答
是,使用
$userDate = strtotime('2017-08-02 12:00:00');
echo date('Y-m-d H:i:s', strtotime('+4 hours', $userDate));
4小时后获取日期
说明
strtotime
转换任何英文文本的日期时间描述为Unix时间戳。最常用的是它与实际的日期字符串或不同的字符串一起使用。例如。 +5 months
,'下周一'等。它将返回Unix timestamp - 表示1970-01-01之后有多少秒的整数(1970-01-01 00:00:00为0,1970-01-01 00:01:00为60等等) 。
所以在strtotime('2017-08-02 12:00:00')
我们将日期转换为整数供以后使用。
strtotime('+4 hours', $userDate)
- 此处我们使用我们的日期作为“now”参数(默认为time()
)并要求在4小时后返回时间戳。
echo date('Y-m-d H:i:s', ...);
- date
接受格式和Unix时间戳从整数转换回人类可读的文本。
答
可能是你正在寻找这样的: http://php.net/manual/en/datetime.modify.php
$date = new DateTime('2006-12-12');
$date->modify('+1 day');
echo $date->format('Y-m-d');
答
对于日期时间,您可以使用add方法,但必须输入正确的代码才能添加数量。
$my_date = new DateTime();
$addition = 4;
$my_new_date = $my_date->add(new DateInterval("P${addition}D"));
echo $my_new_date->format('Y-m-d H:i:s');
其中添加是您想要添加的变量。
您应该检查[strtotime](http://php.net/manual/en/function.strtotime.php) –
您可以将用户输入格式化为[* interval spec *](http:// php。 net/manual/dateinterval.construct.php#refsect1-dateinterval.construct-parameters),例如'P2WT4H'并在'DateTime#add'中使用它 – Phil
用户选择是如何控制的?它只是*文本还是有特定的字段? – Phil