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

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

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

棘手的部分是,我还希望能够搜索 "january" 和 return 所有 created_at 是一月的结果。除此之外,我希望能够搜索“24 jan”或“24 january”和 return 在 1 月 24 日创建的所有约会。我可以使用以下任一方法执行此操作:

搜索"january"时:

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

例如搜索“24 jan”时:

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

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

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

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

我不太了解Laravel,但是如果你使用的Carbonclass扩展了PHP自己的DateTimeclass 那么你可能会发现自己执行了这样的事情。