我在库中遇到了两种奇怪的行为,我的目标是将秒转换为显示days, hours, minutes, and seconds的可读格式.

当try 使用Carbon库将2698447 seconds转换为人类可读的格式时,我得到了以下结果:

<?php

use Carbon\CarbonInterval;
use Carbon\Carbon;

echo CarbonInterval::seconds(2698447)->cascade()->forHumans();

enter image description here

但是,当使用在线转换器时,输出是不同的(https://www.tools4noobs.com/online_tools/seconds_to_hh_mm_ss/):

Online Converter Result

在我的代码中,我还try 了使用CarbonInterval,当分别转换28天和30天时,输出似乎暗示28天相当于一个月:

use Carbon\CarbonInterval;
use Carbon\Carbon;

echo CarbonInterval::seconds(28*24*3600)->cascade()->forHumans(); // Outputs: 28 days
echo "\n";
echo CarbonInterval::seconds(30*24*3600)->cascade()->forHumans(); // Outputs: 30 days
echo "\n";

CarbonInterval Results

考虑到这些结果,我对将天解释为月感到困惑.如何将转换配置为将一个月视为30天或31天,此外,是否可以将输出限制为以天为最大单位(天、小时、分钟、秒)?

推荐答案

您可以跳过forHumans()个选项中不需要的单位:

echo CarbonInterval::seconds(2698447)->cascade()->forHumans([
    'skip' => ['week', 'month', 'year'],
]);

Php相关问答推荐

WooCommerce产品按特定元数据的自定义数字排序选项

在WooCommerce中禁用特定日期之前的免费送货

如何删除WordPress用户的个人资料描述或其他个人资料字段中的链接?

由于某种原因,FILE_GET_CONTENTS从一天到另一天停止工作,并在PHP 7.2.34中返回一条&http/1.1 406不能接受&的错误

在Laravel中修改JSON输出

在WooCommerce中添加特定产品类型的百分比费用和固定费用

在WooCommerce中只允许高价产品的BACS付款

Laravel 10中的Validator类

WooCommerce在收据页面获取产品下载URL

Azure应用程序无法访问共享文件夹

在 PHP 中将字符串分解为数组(字符串类似于 WP 短代码)

invalid_grant 和无效的 JWT 签名

Filament PHP v3:在禁用的表单字段上,ID 不会写入数据库

使用 Composer 找不到 Google APIClient 类

在特征中使用类的属性

跟踪通过 WooCommerce 分层定价表插件进行的购买

基于WooCommerce中的产品变体自定义感谢页面跳转

PHP:如何将多列sql查询结果转换成数组

如何故意创建不同的错误(404,500,419)? Lavravel PHP

将样式文件或脚本引入WordPress模板