如何获取由 Carbon::parse() 解析日期时间字符串的格式说明符

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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 中的描述对其进行解析。

【讨论】:

以上是关于如何获取由 Carbon::parse() 解析日期时间字符串的格式说明符的主要内容,如果未能解决你的问题,请参考以下文章

whereBetween 不使用 Carbon::parse()->subDay() & 当前日期 laravel

在 .blade 模板中使用 Carbon 本地化日期

比较 Laravel 框架中的碳日期 [重复]

从 0 到 1 解析 DevOps 高效落地方案

从 sql 数据库格式化 iso 日期并返回到刀片

使用 vue js 时在 laravel 中为 foreach 提供的参数无效