我一直在网上寻找这个答案,然后空了......我非常累,所以我想我会放手一搏....
我有一个来自文本框的日期变量
$effectiveDate=$_REQUEST['effectiveDate'];
我要做的是取这个日期并添加当前时间
date('Y-m-d H:i:s', strtotime($effectiveDate))
当我回应这个时,我得到1969-12-31 19:00:00
这可能吗?有人能指出我正确的方向吗?
答案 0 :(得分:7)
我找到了解决问题的方法......
$currentDate = date("Y-m-d");
$currentTime = date("H:i:s");
$currentDate = date("Y-m-d H:i:s", strtotime($currentDate . $currentTime));
echo $currentDate;
这从一个格式的变量中取一个日期,并从另一个变量中取另一个变量的日期并将它们放在一起:)
感谢大家的时间......
DateTime::createFromFormat
也可以,但只有你有PHP 5.3或更高版本......(我认为)
答案 1 :(得分:1)
有效日期字符串不是strtotime识别的格式,因此strtotime返回false,将其解释为0,这会导致日期显示为1970年1月1日00:00:00减去您的时区偏移量。
答案 2 :(得分:1)
您看到的结果是由于输入的日期不是strtotime
识别的格式。在我不知道你使用的格式的情况下,我能想到的最可能的情况是你使用美国的命令将月份和日期错误地放在一边 - 这会让strtotime
感到困惑,因为如果它同时接受它们则不能区分2月3日和3月2日,所以它必须拒绝美国格式的日期。
strtotime
最可靠的格式是YYYY-MM-DD HH:ii:ss,因为它是不显眼的。
答案 3 :(得分:0)
日期只是一个时间戳,它不是面向对象的,我不喜欢它。
您可以使用DateTime对象。
面向对象的最佳方式是:
$effectiveDate=$_REQUEST['effectiveDate'];
// here you must pass the original format to pass your original string to a DateTimeObject
$dateTimeObject = DateTime::createFromFormat('Y-m-d H:i:s', $effectiveDate);
// here you must pass the desired format
echo $dateTimeObject->format('Y-m-d H:i:s');