在 WordPress 中使用 Carbon 库简化日期时间处理

文 / @WordPress主题

Carbon——PHP的日期时间处理库

在PHP中处理时间是有一定难度的,特别是当涉及到时间格式转化、时区转换、时间对比等功能时。在本站之前的一篇文章中,我们根据文章的新鲜度调整了时间的显示方式,实现了时间处理功能。但为了让日期时间处理更加简单方便,推荐使用Carbon日期时间处理库。

Carbon简洁的代码和人性化的语法

以下是一段实现月度会员订阅或者续期的代码。其中,Carbon::now('Asia/Shanghai')初始化一个现在时间的Carbon对象;$day->addMonth()的作用是在现在时间上加上了一个月。相比原生PHP函数,这种语法更加简洁明了。

$day_now=Carbon::now('Asia/Shanghai');
$day=$day_now;

// 如果是老会员,获取过期时间以便升级
if($old_expiration_day){
  $day=Carbon::createFromFormat('Y-m-dH:i:s',$old_expiration_day);
}

$new_expiration_day=$day->addMonth()->toDateTimeString();

update_user_meta($user_id,'expiration_day',$new_expiration_day);

$user=newWP_User($user_id);
$user->set_role('monthly');

日期时间的加和减

初始化一个Carbon对象,我们可以直接增加或减少一天、一周、一月、一年等。Carbon不需要我们再去手动计算时间量,只需要调用它提供的方法即可。

$dt=Carbon::create(2012,1,31,0);

echo$dt->toDateTimeString();//2012-01-3100:00:00

echo$dt->addYears(5);//2017-01-3100:00:00
echo$dt->addYear();//2018-01-3100:00:00
echo$dt->subYear();//2017-01-3100:00:00
echo$dt->subYears(5);//2012-01-3100:00:00
...

显示人性化的日期时间

以下代码可以通过添加或减少时间,生成更加符合人性化的时间格式。比如,不是显示2017年4月8日,而是显示一月前,这样看起来更加直观。

echoCarbon::now()->subDays(5)->diffForHumans();//5天前

echoCarbon::now()->diffForHumans(Carbon::now()->subYear());//1年后

$dt=Carbon::createFromDate(2011,8,1);

echo$dt->diffForHumans($dt->copy()->addMonth());//1月前
echo$dt->diffForHumans($dt->copy()->subMonth());//1月后

echoCarbon::now()->addSeconds(5)->diffForHumans();//5秒后

echoCarbon::now()->subDays(24)->diffForHumans();//3周前
echoCarbon::now()->subDays(24)->diffForHumans(null,true);//3周

日期时间的对比

需要判断某个时间处于现在、过去、还是未来?Carbon也提供了方便的方法。

$dt=Carbon::now();

$dt->isWeekday();
$dt->isWeekend();
$dt->isYesterday();
$dt->isToday();
$dt->isTomorrow();
$dt->isFuture();
$dt->isPast();
$dt->isLeapYear();

Carbon可以方便准确地帮助我们处理日期时间,减少代码量的同时,也提高了效率。当前最流行的PHP框架Laravel中也用了Carbon库来处理日期时间。本文只介绍了部分Carbon的使用方法,更多使用方法请参考PHPCarbon日期时间处理库官方文档

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。