Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Determine\DateTime已在构造函数中推断出一天_Php_Datetime - Fatal编程技术网

Php Determine\DateTime已在构造函数中推断出一天

Php Determine\DateTime已在构造函数中推断出一天,php,datetime,Php,Datetime,我试图让用户输入接受一个日期来限制搜索。我使用以下方法: try { $begin = new \DateTime($range['begin']); } catch (\Exception $e) { $begin = null; } 如果构建日期失败,则不会修改查询(未显示) 偶尔用户只输入一个月,很明显,用户希望在该月的第一天和最后一天之间进行搜索,我可能会以不同的方式修改查询 不幸的是,php推断,在没有其他规范的情况下,用户指的是月初。有没有办法确定是否发生了这种情况

我试图让用户输入接受一个日期来限制搜索。我使用以下方法:

try {
    $begin = new \DateTime($range['begin']);
} catch (\Exception $e) {
    $begin = null;
}
如果构建日期失败,则不会修改查询(未显示)

偶尔用户只输入一个月,很明显,用户希望在该月的第一天和最后一天之间进行搜索,我可能会以不同的方式修改查询

不幸的是,php推断,在没有其他规范的情况下,用户指的是月初。有没有办法确定是否发生了这种情况?问这个问题的另一种方式是,如何确定用户提供了一个没有日期的有效月份,并将其与提供一个利用DateTime自动解释的无数格式的月份第一天的日期区分开来


我的第一个过程使用了date\u parse,但这也可以推断日期。

最好总是知道输入值的格式,这样您就可以简单地转换为datetime对象,例如:

$inputFieldValue = '22/02/2017';
$date = \DateTime::createFromFormat('d/m/Y', $inputFieldValue);
if ($date instanceof \DateTime) {
    echo 'input is valid date, do what you need';
} else {
    echo 'input is not valid date';
}

更多文档

构造函数接受输入字符串的许多格式。它尽力从提供的输入中提取日期和时间。规则在手册中解释。为了实现您的目标,在将输入字符串传递到[
DateTime
]之前,您应该自己进行分析,以检测您想要处理的特殊情况(当用户只输入月份名称时,f.e.)。您在这里没有提供太多信息。输入看起来像什么?你不能检查输入格式并相应地更改它吗?我更喜欢简单的选择字段,用户可以从定义的选项列表中选择一个值[今天、昨天、1周、2周等],这样接下来你可以根据需要创建有效的DateTime对象,或者不需要精确的最新期间,最好使用datepicker和范围功能,其中一个是开始日期,第二个是结束值date@miken32重点是使用DateTime已经接受的各种格式,而不是重新发明它们