Laravel搜索日期 - 检查字符串是实际日期还是月份


Laravel searching for date - Check if string is an actual date, or a month

在我的应用程序中,我有一个搜索功能,用于搜索我的约会。这是一种使用 LIKE 查找和匹配要搜索的任何字符串的简单方法。

棘手的部分是,我还希望能够搜索"一月"并返回找到的所有结果,这些结果created_at是一月。接下来,我希望能够搜索"1 月 24 日"或"1 月 24 日"并返回 1 月 24 日创建的所有约会。我可以使用以下任一方法执行此操作:

搜索"一月"时:

$result = Carbon::createFromFormat('F', $search)

例如,在搜索"1月24日"时:

$result = Carbon::createFromFormat('d M', $search)

如果我确实搜索"一月",这一切都有效。但是当我搜索其他东西时,比如"医生",它失败了,给了我一个错误。我的问题是,如何检查搜索字符串是否是日期(或者上面发布的只是一个月或一天和一个月),如果它是匹配项,则返回 true,但如果不是,则返回 false?

如果提供的字符串不是有效日期,PHP 的 DateTime 对象构造函数的过程版本会返回 false:

date_create("Some string that isn't a date"); // returns false

我对 Laravel 了解不多,但是如果您使用的 Carbon 类扩展了 PHP 自己的 DateTime 类,那么您可能会发现自己实现这些东西。