【问题标题】:How to get format specifiers in which a datetime string is parsed by Carbon::parse()如何获取由 Carbon::parse() 解析日期时间字符串的格式说明符
【发布时间】:2024-01-21 14:34:01
【问题描述】:

在 Carbon PHP 中,我们有一个解析字符串的方法。如果字符串是有效的日期字符串,那么我将被解析为有效的 Carbon 对象。我很想知道是否有任何方法可以获得php确定日期的可能格式字符串。例如:

Carbon::parse("01 January, 2018");

然后我们会得到一个有效的碳对象。 我的问题是,我们是否可以得到“d F,Y”,这是 php 自动猜测的实际格式说明符。

【问题讨论】:

    标签: php datetime date-formatting php-carbon dateformatter


    【解决方案1】:

    方法parse 总是返回一个Carbon\Carbon 的实例。所以你应该在之前验证你的字符串:

    Validator::make(
        ['date_value' => $date],
        ['date_value' => 'date']
    )->validate();
    Carbon::parse($date);
    

    或改用createFromFormat 方法:

    if (Carbon::createFromFormat('d F, Y', $stringVariable) !== false) {
        // valid date
    }
    

    【讨论】:

    • 感谢您的努力,但我要求的是,获取可以将日期字符串解析为的日期字符串的格式说明符。例如:对于像“2018 年 1 月 1 日”这样的日期字符串,如果可能的话,我想要“d F, Y”作为回报。
    • @AmiNirob 啊,抱歉,误会了。我认为使用Carbon 是不可能知道的。您必须寻找任何其他库或实现自定义实现
    • 不,有问题。没关系 :)。我可以请教一下其他图书馆吗?
    【解决方案2】:

    Carbon 扩展了 PHP DateTime 类。 Carbon::parse 方法最终将输入传递给 DateTime::__construct,它会按照 PHP 手册 Supported Date and Time Formats 中的描述对其进行解析。

    【讨论】: