0

0

如何解决PHP中复杂时间时长格式转换问题,使用khill/php-duration轻松搞定

PHPz

PHPz

发布时间:2025-07-24 12:38:04

|

173人浏览过

|

来源于php中文网

原创

可以通过一下地址学习composer学习地址

最近在负责一个项目,其中有一个核心功能是记录用户完成某项任务所花费的时间。起初,我们允许用户以多种方式输入时长:比如“1小时30分钟”、“1h 30m”、“90:30”甚至直接输入秒数“5430”。这听起来很灵活,但很快就给我们带来了巨大的麻烦。

遇到的困难:数据格式混乱与解析难题

最大的痛点在于数据格式的混乱。当用户输入“1h 30m”时,我们需要将其转换为统一的秒数进行存储,以便后续进行统计和计算。而当我们需要向用户展示时,可能又需要将秒数转换回“1小时30分钟”或“01:30:00”这样的易读格式。

手动编写解析逻辑简直是一场噩梦。我尝试过使用正则表达式来匹配各种可能的输入格式,但很快发现这不仅代码量巨大,而且难以维护,稍微变动一个输入习惯,整个解析逻辑就可能崩溃。更别提还要处理各种单位(小时、分钟、秒)的转换,以及小数点、缩写等细节,稍有不慎就会导致计算错误。这不仅拖慢了开发进度,还让我对数据的准确性感到担忧。

Composer 与 khill/php-duration:优雅的解决方案

立即学习PHP免费学习笔记(深入)”;

正当我焦头烂额之际,我想到了 Composer 这个 PHP 包管理神器。通常,遇到这种通用的、复杂的问题,社区里往往已经有成熟的解决方案。一番搜索后,我发现了 khill/php-duration 这个宝藏级的 Composer 包。

khill/php-duration 是一个专门用于在冒号格式时间、人类可读时间以及秒数之间进行转换的库。它的设计初衷就是为了解决用户输入时长时可能出现的各种格式问题。它能够智能地解析多种输入,并提供统一的输出格式,完美契合了我的需求。

如何使用 khill/php-duration 解决问题

首先,使用 Composer 安装这个库非常简单:

composer require khill/php-duration:~1.0

安装完成后,你就可以在你的PHP代码中引入并使用了。下面是一些实际的应用示例,展示了它是如何轻松应对各种时长格式的:

Action Figure AI
Action Figure AI

借助Action Figure AI的先进技术,瞬间将照片转化为定制动作人偶。

下载

1. 从冒号格式时间到其他格式:

use Khill\Duration\Duration;

$duration = new Duration('7:31');

echo $duration->humanize();  // 输出:7m 31s (人类可读格式)
echo $duration->formatted(); // 输出:7:31 (冒号格式)
echo $duration->toSeconds(); // 输出:451 (转换为秒)
echo $duration->toMinutes(); // 输出:7.5166 (转换为分钟,带小数)
echo $duration->toMinutes(null, 0); // 输出:8 (转换为分钟,四舍五入)
echo $duration->toMinutes(null, 2); // 输出:7.52 (转换为分钟,保留两位小数)

2. 从人类可读格式到其他格式:

khill/php-duration 强大之处在于它能理解多种人类可读的输入,无论是“1h 2m 5s”还是“4 Hr. 32 Min.”,它都能正确解析。

use Khill\Duration\Duration;

$duration = new Duration('1h 2m 5s');

echo $duration->humanize();  // 输出:1h 2m 5s
echo $duration->formatted(); // 输出:1:02:05
echo $duration->toSeconds(); // 输出:3725
echo $duration->toMinutes(); // 输出:62.0833

甚至你可以配置每天的工作小时数,让它处理更复杂的“天”单位:

use Khill\Duration\Duration;

// 配置每天6小时
$duration = new Duration('1.5d 1.5h 2m 5s', 6);

echo $duration->humanize();  // 输出:1d 4h 32m 5s
echo $duration->formatted(); // 输出:10:32:05
echo $duration->toSeconds(); // 输出:37925

3. 从秒数到其他格式:

如果你已经有了秒数,也可以方便地将其转换回其他格式进行展示:

use Khill\Duration\Duration;

$duration = new Duration('4293'); // 4293秒

echo $duration->humanize();  // 输出:1h 11m 33s
echo $duration->formatted(); // 输出:1:11:33
echo $duration->toSeconds(); // 输出:4293

值得一提的是,你甚至不需要每次都创建新的 Duration 对象,可以直接将值传递给方法进行转换,非常灵活:

use Khill\Duration\Duration;

$duration = new Duration; // 创建一个实例

echo $duration->humanize('1h 2m 5s');  // 输出:1h 2m 5s
echo $duration->formatted('1h 2m 5s'); // 输出:1:02:05
echo $duration->toSeconds('1h 2m 5s'); // 输出:3725

总结其优势与实际应用效果

khill/php-duration 这个库的引入,彻底解决了我们项目中时间时长格式转换的痛点,带来了显著的优势:

  1. 极大地简化了开发工作量: 我们不再需要编写复杂的正则表达式和条件判断来解析和格式化时间,一行代码就能搞定。
  2. 提高了数据准确性和一致性: 无论用户输入何种格式,最终都能统一转换为秒数进行存储,避免了因格式不一导致的数据混乱和计算错误。
  3. 提升了用户体验: 用户可以根据自己的习惯输入时长,系统能够智能识别并正确处理,减少了因输入格式不符而产生的困扰。
  4. 代码更简洁、可读性更强: 复杂的转换逻辑被封装在库中,我们的业务代码变得更加聚焦和清晰。
  5. 支持多种单位和精度: 从小时到秒,甚至微秒,都能得到很好的支持,满足了不同场景的需求。

总而言之,khill/php-duration 是一个非常实用且高效的 PHP 库,它让时间时长处理变得前所未有的简单。如果你在项目中也面临类似的问题,强烈推荐你尝试一下,它绝对能让你从繁琐的字符串解析中解脱出来,专注于核心业务逻辑的实现。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2490

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1588

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1483

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

952

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1414

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1234

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1445

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1305

2023.11.13

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十四期_PHP8编程
第二十四期_PHP8编程

共86课时 | 3.4万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.4万人学习

第二十三期_PHP编程
第二十三期_PHP编程

共93课时 | 6.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号