在我的应用程序中,我有一个搜索功能,用于搜索我的约会。这是一种使用 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
类,那么您可能会发现自己实现这些东西。