laravel的carbon日期函数创建指定的now()日期以及遇到的一些坑

xiaoxiao2021-02-28  13

一、关于carbon()日期函数

      这个东西,我也是最近才接触,之前用的laravel 5.1,处理时间类还是使用最老套的方法,实在是烦不胜烦。初见carbon简直惊为天人,目前laravel 5.5默认的就是这个日期处理方法。很强大,很好用。

文档部分: github地址:https://github.com/briannesbitt/carbon 国内文档:https://9iphp.com/web/laravel/php-datetime-package-carbon.html

二、carbon创建指定的日期为now()函数

需求:需要指定一个变量来操作这个变量下的日期。比如指定日期为5月14日,那么我们获取的“昨天”,或者“明天”,都是依据于5月14日来的。这种情况下,最佳的方式就是创建一个now()函数,为我们想要的日期。

$knownDate = Carbon::create(2018, 5, 14,0,0,0); // 创建日期为2018年5月14日 Carbon::setTestNow($knownDate); // 此时对应的now()函数是2018年5月14日

创建之后,我们根据当前方法中的now()函数获取到的都是5月14日。

三、遇到的一些坑

1、在我们创建好now()函数之后,不要随意的初始化carbon

此处的parse: parse方法解析任何顺序和类型的日期(结果为 Carbon 类型的日期时间对象)

//执行此操作之后,会默认还原now()函数为当前的时间。 $time = Carbon::parse($time);

如果我们还想使用now()为5月14日,那只能换一种方式:

//相当于直接解析的时候,就用carbon类型的日期,这样就不用重新初始化了 $time = Carbon::parse(now()->toDateString());

2、carbon类型日期函数

在我们常用的日期函数中,日期的类型多为字符串类型,我们可以用原生的php来进行一些操作。

//此处是carbon对应的日期类型,是对象格式的 object(Carbon\Carbon)#1212 (3) { ["date"]=> string(26) "2018-05-29 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "PRC" }

所以我们在操作日期的时候,一定要谨记时间日期的类型,免得出错。

3、更改日期提示为中文

正常Carbon格式的时间使用diffForHumans() 得到的是 1 day ago这种英文提示。如果想转换为中文的话,可以去

//去该目录下 app/Providers/AppServiceProvider.php //修改下面的值 静态方法 setLocale('en')改为setLocale('zh')

框架的目的在于提升开发的一致性,简便性。laravel都做到了,很赞。

end

铁柱同学 认证博客专家 PHP 求知者 伪全栈 博主从事php开发已然五年,然入行越久越深感知识无限,学海无涯,非一时之功。故编写博客,用于自省记录,也遵循前辈们的教导,希望可以帮到更多的人。愿各位都能勇攀高峰,顺利成为大佬!奥利给!
转载请注明原文地址: https://www.6miu.com/read-1650323.html

最新回复(0)