Carbon::parse() 接受相对日期字符串,例如“下个月的第一天”。我的团队成员希望在 VueJS / Laravel 应用程序中为此添加一个输入字段,但我担心验证。
事实证明,所有这些字符串都被 Carbon 解析而没有抛出错误:
但是,后两者给出的结果不正确,前提是撰写本文时的日期是 2023 年 10 月 26 日:
我如何提前知道支持哪些格式并实际工作而不给出错误的结果?
我搜索了文档,其中指出:
传递给Carbon::parse或new Carbon的字符串可以表示相对时间(下周日、明天、下个月第一天、去年)或绝对时间(2008年12月第一天,2017-01-06) 。您可以使用 Carbon::hasRelativeKeywords() 测试字符串是否会生成相对或绝对日期。
这些是唯一的可能性还是还有更多?
我问了ChatGPT,它知道“明年的第一天”行不通,但它无法向我提供信息来源。它说了一些关于“常识”的事情......
使用
Carbon::parse()
时,您可以提供各种日期格式来解析日期字符串。
以下是您可以传递给
Carbon::parse()
的相对日期格式的一些示例:
tomorrow
next Thursday
last Monday
first day of next month
3 days ago
+2 weeks
next week Tuesday
now
您可以使用
tomorrow
、next
、last
和 ago
等术语来指定相对日期,并且可以将它们与日、周、月或其他时间单位结合使用。
示例:
$date = Carbon::parse('next Wednesday');
echo $date->toDateString(); // Outputs the date of the next Wednesday