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

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

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

特性

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

安装

composer require zjkal/time-helper

使用文档

use zjkal\TimeHelper;
获取需要的秒数
//返回到今天晚上零点之前的秒数
TimeHelper::secondEndToday();//返回N分钟的秒数(默认为1分钟)
TimeHelper::secondMinute(5);//返回N小时的秒数(默认为1小时)
TimeHelper::secondHour(2);//返回N天的秒数(默认为1天)
TimeHelper::secondDay(10);//返回N周的秒数(默认为1周)
TimeHelper::secondWeek(4);
返回友好的日期格式,比如N秒前,N分钟前,N小时前等等
//一共2个参数:
//第1个参数传入字符串类型的时间或者时间戳都可以,
//第2个参数为语言(默认为中文,需要英文请传入en)
TimeHelper::toFriendly('2022-3-2 10:15:33');
//英文
TimeHelper::toFriendly(1646186290, 'en');
判断时间范围
//判断日期是否为今天
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);
计算两个时间相差值

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

//计算两个日期相差天数
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');
返回N小时/天/星期/月/年前或者后的时间戳
//返回指定时间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);
获取当前秒级/毫秒级/微秒级/纳秒级的时间戳
//获取秒级的时间戳,可用time()代替
TimeHelper::getTimestamp();//获取毫秒级的时间戳
TimeHelper::getMilliTimestamp();//获取微秒级的时间戳
TimeHelper::getMicroTimestamp();//获取纳秒级的时间戳
TimeHelper::getNanoTimestamp();
日期转换

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

//将任意格式的时间转换为指定格式
//第一个参数是时间格式,与系统函数date()的格式保持一致
//第二个参数则是任意格式的时间日期,不传则默认为当前时间,可用系统函数date()代替
TimeHelper::format('Y-m-d H:i:s','May 3, 2022');//判断一个字符串是否为时间戳,是返回true,否返回false
TimeHelper::isTimestamp(1646360133);//将任意时间类型的字符串转为时间戳
TimeHelper::toTimestamp('Apr 11, 2020');
平闰年相关
//判断是否为闰年,是返回true,否返回false
TimeHelper::isLeapYear('2020-3-2 10:15:33');//判断该日期的当年有多少天
TimeHelper::daysInYear(1646360133);//判断该日期的当月有多少天
TimeHelper::daysInMonth('Apr 11, 2020');
时区相关
//将任意格式的时间或时间戳转换为指定时区的时间
//第一个参数为要转换的目标时区
//第二个参数为原时区,不传则默认为当前时区
//第三个参数为任意格式的时间或时间戳,不传则默认为当前时间
//第四个参数为时间格式,与系统函数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);

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

国内节假日/工作日相关
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应用到您的项目中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/13607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tomcat--应用部署

tomcat根目录结构 Tomcat中默认网站根目录是/usr/local/apache-tomcat-8.5.100/webapps/在Tomcat的webapps目录中,有个非常特殊的目录ROOT,它就是网站默认根目录。将eshop解压后的文件放到这个/usr/local/apache-tomcat-8.5.100/webapps/ROOT中。bbs解压…

为什么要使用 eval

调用 eval 方法的原因是为了确保模型在进行预测时使用正确的配置。在训练过程中,某些层(如 Dropout 层)的行为是为了正则化而设计的,它们会在每次迭代中随机丢弃一些神经元的输出。而在评估模式下,这些层将不再随机丢弃…

Git简单理解

Git 概述 Git 是一个免费的开源的,分布式版本控制系统,可以快速高效的处理从小型到大型的各种项目 Git占地面积小,性能极快,具有廉价的本地库,方便的暂存区和多个工作流分支等特性 版本控制 版本控制是一种记录文件…

低耦合双写一致性方案-使用canal+MQ

需求:继上一篇使用xxljob实现数据的全量同步到es后,当数据库中新增、删除、修改数据时,应该对es中的对应索引库实现增量同步。 本文介绍了2种双写一致性方案,对其中使用MQ的方案进行了实现。 1. 方案设计 1.1 数据一致性问题分析…

2024.5.21欧洲商会网络安全大会(上海)

本次安策将将参加超越 2024 年网络安全大会:驾驭数字前沿大会(上海),2024年5月21日,期待和欢迎新老朋友在大会上会面和交流。 时间 2024-05-21 |14:00 - 16:30 场地: 上海瑞士大酒店 地址: 3rd Floor, Davo…

iOS 17.5 release notes

文章目录 iOS 17.5 更新恢复了多年前删除的一些图片新增彩虹壁纸欧盟用户可直接从网站下载应用新增了追踪通知改进 Apple News图书应用"阅读目标"设计更新颜色匹配的播客小部件Web浏览器安全权限的访问下一代“Beats Pill”扬声器在iOS 17.5代码中得到确认店内Vision…

【C++】 单例设计模式的讲解

前言 在我们的学习中不免会遇到一些要设计一些特殊的类,要求这些类只能在内存中特定的位置创建对象,这就需要我们对类进行一些特殊的处理,那我们该如何解决呢? 目录 1. 特殊类的设计1.1 设计一个类,不能被拷贝&#xf…

人际关系与情景模拟

面试中的同事 1、着眼合作多理解 2、立足长远多承担 3、分工协作多沟通 4、相互学历促成长 面试中的领导 1、尊重领导权威 2、适应领导风格 3、服从领导安排 4、请示领导意见 5、完成领导任务 6、汇报工作结果 面试中的下属(面试考的很少,毕…

@Configuration注解使用详解【记录】

Configuration注解 1、主要作用: 标识配置类:Configuration用于标识一个类是配置类,这是Spring Boot应用程序中的关键组件之一,用于定义和管理Bean的创建和配置(用于取代bean.xml配置文件注册bean对象)。通…

Android Studio 与 Gradle 及插件版本兼容性

Android Studio 开始新项目时,会自动创建其中部分文件,并为其填充合理的默认值。 项目文件结构布局: 一、Android Gradle 及插件作用: Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件 (AGP) 添加…

代码随想录阅读笔记-动态规划【不同路径 II】

题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右…

全球视频会议软件巨头Zoom,率先引入后量子端到端加密

5月21日,Zoom Video Communications公司宣布,后量子端到端加密(E2EE)现已面向全球推出,适用于Zoom Workplace。目前,Zoom已将该功能加入Zoom Meetings,稍后将扩展至Zoom Phone和Zoom Rooms。 图…

视频批量裁剪助手:一键式高效缩小视频尺寸,极速提升工作效率的必备神器!

视频已经成为我们日常生活和工作中不可或缺的一部分。无论是个人vlog、企业宣传片,还是教学视频、广告素材,视频都承载着大量的信息和情感。然而,很多时候,我们手中的视频尺寸并不符合我们的需求,这时,一款…

He3DB MySQL计算下推优化设计

前言 计算下推是数据库优化器优化查询性能的一种常见手段,早期的数据库系统提及的计算下推一般是指谓词下推,其 理论源自关系代数理论。 2000 年以后,随着 Oracle RAC 的盛行以及一众开源分布式数据库的崛起,存算分离的概 念逐步…

Denodo 数据虚拟化

Denodo是一家专注于数据虚拟化领域的软件公司,其核心产品Denodo Platform提供了一套全面的数据集成和数据服务解决方案。以下是关于Denodo的介绍、工作原理、应用场景以及在不同行业的应用比较: Denodo介绍 Denodo Platform通过数据虚拟化技术&#xf…

前端常用网站合集

常用网站 Node.js:https://nodejs.cn/Npm:https://www.npmjs.com/MDN:https://developer.mozilla.org/zh-CN/前端兼容性自查工具:https://caniuse.com/Vue3:https://cn.vuejs.org/Vue2:https://v2.cn.vuej…

Linux中的正则表达式

在说正则表达式之前再加几个小知识 1、输出重定向: 标准输出:是将信息输出在终端上 标准错误输出:在执行命令的过程中所产生的错误信息也是输出在终端上的 标准输出:是从键盘输入的 1.1、标准输出重定向 作用:将本来要…

/etc/passwd与/etc/group内容详解

/etc/passwd 在Linux系统中,/etc/passwd是一个文本文件,用于存储系统中的用户账号信息。该文件的每一行代表一个用户账号,包含以下七个字段,每个字段由冒号分隔: 1. 用户名(Username)&#xf…

k8s 声明式资源管理

一、资源配置清单的管理 1.1 查看资源配置清单 声明式管理方法: 1.适合于对资源的修改操作 2.声明式资源管理方法依赖于资源配置清单文件对资源进行管理 资源配置清单文件有两种格式:yaml(人性化,易读),j…

Flink 调度源码分析4:Physical Slot 分配过程

Flink 调度源码分析1:拓扑图创建与提交过程 Flink 调度源码分析2:调度过程 Flink 调度源码分析3:Shared Slot 分配策略 Flink 调度源码分析4:Physical Slot 分配过程 1 整体过程 在 SlotSharingExecutionSlotAllocator.allocate…