⏱️TimeHelper——一个简单快捷的PHP日期时间助手类库

这篇具有很好参考价值的文章主要介绍了⏱️TimeHelper——一个简单快捷的PHP日期时间助手类库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

TimeHelper 是一个简单易用的PHP时间日期助手类库,可以快速实现常用的时间日期操作,比如获取指定时间的秒数,获取友好的时间格式,判断时间范围,计算两个时间相差值,返回N小时/天/星期/月/年前或者后的时间戳等等

🧩特性

  • 简单易用: 不依赖任何扩展,开箱即用
  • 化繁为简: 所有方法都可以传入任意类型的时间日期格式时间戳
  • 快捷高效: 所有操作只需要一个静态方法即可完成
  • 长期维护: 作者为自由职业者,保证项目的长期稳定持续更新

🚀安装

通过Composer导入类库

composer require zjkal/time-helper

🌈使用文档

首先在类中引用TimeHelper助手类

use zjkal\TimeHelper;

1. 获取需要的秒数

一般用于设置缓存时间,设置结束时间等

//返回到今天晚上零点之前的秒数
TimeHelper::secondEndToday();

//返回N分钟的秒数(默认为1分钟)
TimeHelper::secondMinute(5);

//返回N小时的秒数(默认为1小时)
TimeHelper::secondHour(2);

//返回N天的秒数(默认为1天)
TimeHelper::secondDay(10);

//返回N周的秒数(默认为1周)
TimeHelper::secondWeek(4);

2. 返回友好的日期格式,比如N秒前,N分钟前,N小时前等等

一般用于社交类平台,评论,论坛等

//一共2个参数:
//第1个参数传入字符串类型的时间或者时间戳都可以,
//第2个参数为语言(默认为中文,需要英文请传入en)
TimeHelper::toFriendly('2022-3-2 10:15:33');
//英文
TimeHelper::toFriendly(1646186290, 'en');

3. 判断时间范围

//判断日期是否为今天
TimeHelper::isToday('2020-4-10 23:01:11');

//判断日期是否为本周
TimeHelper::isThisWeek('2020-5-1');

//判断日期是否为本月
TimeHelper::isThisMonth(1586451741);

//判断日期是否为今年
TimeHelper::isThisYear('Apr 11, 2020');

//判断指定时间是星期几,不传默认为当前时间. 返回值为1-7,1为星期一,7为星期日
TimeHelper::getWeek('2022-11-27');

//判断指定时间是否为平常日(周一到周五)
TimeHelper::isWeekday('2023-03-08');

//判断指定时间是否为周末(周六和周日)
TimeHelper::isWeekend(1586451741);


4. 计算两个时间相差值

如果只传入一个参数,则与当前时间比较

//计算两个日期相差天数
TimeHelper::diffDays('2022-4-10 23:01:11','Apr 11, 2020');

//计算两个日期相差周数
TimeHelper::diffWeeks('2022-4-10 23:01:11');

//计算两个日期相差月数
TimeHelper::diffMonths(1586451741,'Apr 11, 2020');

//计算两个日期相差年数
TimeHelper::diffYears('2022-4-10 23:01:11','Apr 11, 2020');

5. 返回N小时/天/星期/月/年前或者后的时间戳

只传入1个参数以当前时间计算,传入第2个参数则以该时间计算,传入第3个参数为true,则时间取整

//返回指定时间3分钟前0秒的时间戳
TimeHelper::beforeMinute(3,'2022-3-2 10:15:33',true);

//返回当前时间5分钟后的时间戳
TimeHelper::afterMinute(5);

//返回指定时间1小时前的时间戳(请注意此用法为php8之后的用法)
TimeHelper::beforeHour(datetime:'Apr 11, 2020');

//返回2小时后的时间戳
TimeHelper::afterHour(2);

//返回15天前0点的时间戳
TimeHelper::beforeDay(15,null,true);

//返回15天后的时间戳
TimeHelper::afterDay(15);

//返回指定时间2星期前的时间戳
TimeHelper::beforeWeek(2,'2022-4-10 23:01:11');

//返回指定时间10星期后的时间戳
TimeHelper::afterWeek(10,1646360133);

//返回指定时间1个月前的时间戳(请注意此用法为php8之后的用法)
TimeHelper::beforeMonth(datetime:1646360133);

//返回5个月后的时间戳
TimeHelper::afterMonth(5);

//返回指定时间3年前的时间戳
TimeHelper::beforeYear(3,'2022-7-11');

//返回2年后的时间戳
TimeHelper::afterYear(2);

6.获取当前秒级/毫秒级/微秒级/纳秒级的时间戳

生成订单号或者与其他编程语言对接时可能会用到

//获取秒级的时间戳,可用time()代替
TimeHelper::getTimestamp();

//获取毫秒级的时间戳
TimeHelper::getMilliTimestamp();

//获取微秒级的时间戳
TimeHelper::getMicroTimestamp();

//获取纳秒级的时间戳
TimeHelper::getNanoTimestamp();

7.日期转换

用于爬虫爬取网页或第三方程序对接时,时间格式不统一的转换

//将任意格式的时间转换为指定格式
//第一个参数是时间格式,与系统函数date()的格式保持一致
//第二个参数则是任意格式的时间日期,不传则默认为当前时间,可用系统函数date()代替
TimeHelper::format('Y-m-d H:i:s','May 3, 2022');

//判断一个字符串是否为时间戳,是返回true,否返回false
TimeHelper::isTimestamp(1646360133);

//将任意时间类型的字符串转为时间戳
TimeHelper::toTimestamp('Apr 11, 2020');

8.平闰年相关

比原生方法使用起来更方便

//判断是否为闰年,是返回true,否返回false
TimeHelper::isLeapYear('2020-3-2 10:15:33');

//判断该日期的当年有多少天
TimeHelper::daysInYear(1646360133);

//判断该日期的当月有多少天
TimeHelper::daysInMonth('Apr 11, 2020');

9.时区相关 🆕

主要提供获取不同时区的时间和转换不同时区的时间的方法

//将任意格式的时间或时间戳转换为指定时区的时间
//第一个参数为要转换的目标时区
//第二个参数为原时区,不传则默认为当前时区
//第三个参数为任意格式的时间或时间戳,不传则默认为当前时间
//第四个参数为时间格式,与系统函数date()的格式保持一致,不传则默认为Y-m-d H:i:s
TimeHelper::timezoneFormat('Europe/London', 'Asia/Shanghai', '2023-8-15 19:16:43', 'H:i:s');
//获得当前洛杉矶的时间
TimeHelper::timezoneFormat('America/Los_Angeles');
//将洛杉矶时间转换为伦敦时间
TimeHelper::timezoneFormat('Europe/London', 'America/Los_Angeles', 'Aug 15, 2023 10:15:33', 'H:i:s');
//将时间戳转换为伦敦时间
TimeHelper::timezoneFormat('Europe/London', null, 1692097543);

所支持的时区列表请参考时区列表

10.国内节假日/工作日相关 🔥

专门针对国内的节假日进行判断,目前包含2020年-2024年的节假日数据,后续也会持续更新.
为了便于维护,另起了一个类ChinaHoliday,同样可以传入任意类型的时间格式或时间戳

use zjkal\ChinaHoliday;

//判断指定日期是否为国内的工作日
ChinaHoliday::isWorkday('2023-01-23');

//判断指定日期是否为国内的节假日
ChinaHoliday::isHoliday(1646360133);

特别说明: 所有时间的方法都可以传入任意格式的时间或者时间戳, 但是有一点请注意 m/d/y 或 d-m-y 格式的日期,如果分隔符是斜线(/),则使用美洲的 m/d/y 格式。如果分隔符是横杠(-)或者点(.),则使用欧洲的 d-m-y 格式。为了避免潜在的错误,您应该尽可能使用 YYYY-MM-DD 格式或其他格式.

📖开源协议

TimeHelper遵循MIT开源协议, 意味着您无需任何授权, 即可免费将TimeHelper应用到您的项目中文章来源地址https://www.toymoban.com/news/detail-696380.html

到了这里,关于⏱️TimeHelper——一个简单快捷的PHP日期时间助手类库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# - XMLHelper :一个操作XML的简单类库

    下午写了一个操作 XML 文件的类库,后来不用了, 水篇 文章存个档📋 XMLHelper.cs 主要提供以下功能: 加载XML文件:从文件路径或字符串中加载XML文档,并返回 XmlDocument 对象。 保存XML文件:将XmlDocument对象保存为XML文件。 读取XML文件到 DataTable :将XML文件中的数据读取到 Da

    2024年02月10日
    浏览(43)
  • 【Java练习题汇总】《第一行代码JAVA》Java常用类库篇,汇总Java练习题——Optional类、包装类、可变字符串支持类、Runtime类、System类、数学运算类、日期时间处理...

    一、填空题 在 java.lang 包中提供了两个字符串类,分别是________ 和________ 。这两个类都是________ 接口的子类,字符串类提供的求字符串长度的方法是________________ 。 Java 提供的两个大数操作类是________ 和________ 。 对象克隆方法是________ 类提供的,方法名称是________________ ,对

    2024年02月16日
    浏览(54)
  • mac苹果电脑m1 mbp 缺电自动关机后,日期时间无法同步;自动同步日期和时间错误,到一个固定的日期时间

    现为mac苹果电脑上,只要选取自动同步日期和时间,就会同步到一个很早之前的固定日期(现在是2023年1月,会同步到2021年的12月),很奇怪。 网上各种方法,下面的内容是唯一能起作用的。 在https://www.v2ex.com/t/856623的基础上进行修改完善,供大家参考。 解决办法:删除 /

    2024年02月03日
    浏览(165)
  • Qt实现一个简单的应用程序——桌面助手

    1、实现不同功能之间的界面切换 2、可查看日历 3、可实现计时器功能 4、可实现计算器功能 5、ui界面及按钮部件背景的设置 6、为软件设置图标 7、程序打包成软件       1、创建工程         New Project - Application - Qt Widgets Application然后下一步,使用ui界面文件能省去很多步骤

    2024年02月08日
    浏览(69)
  • 记录--设计一个可选择不连续的时间范围的日期选择器

    npm包:sta-datepicker 效果图  普通的时间选择器要么只能单选,要么只能选范围,不可以随意选择若干个时间,同时大多数现成的时间选择器选择结束会收起来,很不方便。现在需求如下 1、可以自己控制展开收起 2、可以选择不连续的多个时间范围的日期 3、可以批量选中日期

    2024年02月09日
    浏览(34)
  • 手动封装一个日期处理工具类,几乎覆盖了所有的时间操作(收藏)

    工具类包含以下方法: - stringToDate : 将字符串转换为java.util.Date类型 - dateToString : 将java.util.Date类型转换为字符串 - stringToLocalDateTime : 将字符串转换为LocalDateTime类型 - localDateTimeToString : 将LocalDateTime类型转换为字符串 - dateToLocalDateTime : 将java.util.Date类型转换为LocalDateTime类型 -

    2024年02月02日
    浏览(43)
  • spark SQL 怎么将一个时间戳字符串转换成hive支持的时间日期类型?

    在 Spark SQL 中,可以使用 to_timestamp 函数将一个时间戳字符串转换成 Hive 支持的时间日期类型。这个函数的语法如下: 其中,timestampStr 表示要转换的时间戳字符串,format 表示时间戳字符串的格式,格式必须与时间戳字符串的实际格式相匹配。如果不指定格式,Spark 会使用默认

    2024年02月11日
    浏览(49)
  • 『牛角书』HarmonyOS鸿蒙实战 开发一个简单聊天助手APP

    我是通过b站上面老师的讲解,跟着老师编写了一个简单聊天助手app,简答实用,对于刚开始接触鸿蒙的我们来说很有帮助。 所用软件为DevEco Studio,点击Create HarmonyOS Project,这里选择了第一个空的项目,点击next会跳至下一个页面。 这里是项目的名称,因为是一个demo,就没有

    2024年02月12日
    浏览(47)
  • vue子组件修改父组件传递的变量(自定义日期时间组件,时间间隔为15分钟或者一个小时)

    子组件不能直接修改父组件变量的值,但是可以通过调用父组件的方法来修改。 在父组件声明变量 在父组件使用子组件并传递数据,修改变量 在子组件中接收值,并调用父组件方法修改父组件的变量 以上步骤只是逻辑步骤和部分代码,以下有完整代码:

    2024年02月14日
    浏览(40)
  • Visual Studio 2019 C# 上位机入门(2):写一个简单的串口助手

    本文记录一下用Visual Studio 2019 C# 写一个简单的串口助手的过程,由于没有先从小处学习,而是直接找相关资料就开始做,免不了很多奇怪的问题花了一些时间,基于此情况,我将尽可能整理出更多细节,尤其是我遇到的坑,以便和我一样的新手小白上手。后续我还准备单独分

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包