PHP 操作日期各种转换,常见日期转换,涉及聊天时间转换、涉及日周月年转换、涉及到图表日期转换

2024-06-04 01:28

本文主要是介绍PHP 操作日期各种转换,常见日期转换,涉及聊天时间转换、涉及日周月年转换、涉及到图表日期转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

日期操作

一、根据日期生成日期数组

/*** 根据指定日期生成日期数组* @param $start_time 开始时间* @param $end_time   结束时间* @return array     返回数组结果*/
function createDateArr($start_time, $end_time)
{$open_start_time = $start_time;$open_end_time = $end_time;$stimestamp = strtotime($open_start_time);$etimestamp = strtotime($open_end_time);// 计算日期段内有多少天$days = ($etimestamp - $stimestamp) / 86400 + 1;// 保存每天日期$arr = [];for ($i = 0; $i < $days; $i++) {$arr[] = date('Y-m-d', $stimestamp + (86400 * $i));}return $arr;
}
//调用示例
$start_time='2024-05-12';
$end_time='2024-05-15';
$data=createDateArr($start_time,$end_time);
//结果
Array
([0] => 2024-05-12[1] => 2024-05-13[2] => 2024-05-14[3] => 2024-05-15
)

二、根据指定日期获取月份数组

/*** 根据指定日期生成月份数组* @param $startDate* @param $endDate* @return array* @throws Exception*/
function generateMonthlyArray($startDate, $endDate) {$start = new DateTime($startDate);$end = new DateTime($endDate);$end->modify('last day of this month');$interval = new DateInterval('P1M');$period = new DatePeriod($start, $interval, $end);$monthlyArray = array();foreach ($period as $month) {$monthlyArray[] = $month->format('Y-m');}return $monthlyArray;
}
//调用示例
$start_time='2024-05-12';
$end_time='2024-12-15';
$data=generateMonthlyArray($start_time,$end_time);
//结果
Array
([0] => 2024-05[1] => 2024-06[2] => 2024-07[3] => 2024-08[4] => 2024-09[5] => 2024-10
)

三、根据指定时间戳返回一周之内的数组数据

/*** 返回指定时间戳一周之内的数组数据* @param string $time 需要转换的时间戳* @param string $format 返回日期格式* @return array*/
function get_week($time = '', $format = 'Y-m-d')
{$time = $time != '' ? $time : time();//获取当前周几$week = date('w', $time);$date = [];for ($i = 1; $i <= 7; $i++) {$date[$i] = date($format, strtotime('+' . $i - $week . ' days', $time));}return $date;
}
//调用示例
$time=strtotime('2024-05-07');
$format='Y/m/d';
$data=get_week($time,$format);
//结果
Array
([1] => 2024/05/06[2] => 2024/05/07[3] => 2024/05/08[4] => 2024/05/09[5] => 2024/05/10[6] => 2024/05/11[7] => 2024/05/12
)

四、将指定日期转化为星期几

/*** 将指定日期转化成星期几* @param $date* @return string*/
function get_week($date)
{header("Content-type: text/html; charset=utf-8");//强制转换日期格式$date_str = date('Y-m-d', strtotime($date));//封装成数组$arr = explode("-", $date_str);//参数赋值//年$year = $arr[0];//月,输出2位整型,不够2位右对齐$month = sprintf('%02d', $arr[1]);//日,输出2位整型,不够2位右对齐$day = sprintf('%02d', $arr[2]);//时分秒默认赋值为0;$hour = $minute = $second = 0;//转换成时间戳$strap = mktime($hour, $minute, $second, $month, $day, $year);//获取数字型星期几$number_wk = date("w", $strap);//自定义星期数组$weekArr = array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");//获取数字对应的星期return $weekArr[$number_wk];
}
//调用示例
$time='2024-05-07';
$data=get_week($time);
//结果
星期二

五、计算俩个日期之差

/*** 计算俩个日期之差* @param $day1  开始日期* @param $day2  结束日期* @return float|int 返回天数*/
function diffBetweenTwoDays($day1, $day2)
{$second1 = strtotime($day1);$second2 = strtotime($day2);if ($second1 < $second2) {$tmp = $second2;$second2 = $second1;$second1 = $tmp;}return ($second1 - $second2) / 86400;
}
//调用示例
$start_time='2024-05-07';
$end_time='2024-05-08';
$data=diffBetweenTwoDays($start_time,$end_time);
//结果
1

六、根据将秒数转换成年月日时分秒

/*** 根据将秒数转换成年月日时分秒* @param $time* @return string*/
function GEtTime($time){if(is_numeric($time)){$value = array("years" => 0, "days" => 0, "hours" => 0,"minutes" => 0, "seconds" => 0,);if($time >= 31556926){$value["years"] = floor($time/31556926);$time = ($time%31556926);}if($time >= 86400){$value["days"] = floor($time/86400);$time = ($time%86400);}if($time >= 3600){$value["hours"] = floor($time/3600);$time = ($time%3600);}if($time >= 60){$value["minutes"] = floor($time/60);$time = ($time%60);}$value["seconds"] = floor($time);$n=$t=$h=$m=$s='';if ($value["years"]>0){$n=$value["years"]."年";}if ($value["days"]>0){$t=$value["days"]."天";}if ($value["hours"]>0){$h=$value["hours"]."小时";}if ($value["minutes"]>0){$m=$value["minutes"]."分";}if ($value["seconds"]>0){$s=$value["seconds"]."秒";}$time2=$n.$t.$h.$m.$s;return $time2;}else{return '时间格式不正确';}
}
//调用示例
$time=32556926;
$time=80;
$data=GEtTime($time);
//结果
11113小时4640120

七、获取今日当月今年日期

//注意 空格不能去掉
//获取今日日期0点-23.59
$time = date('Y-m-d', time());
$start_time=$time.' 00:00:00';
$end_time = $time." 23:59:59";
//获取当月日期
$start_time = date('Y-m-01', time()) . ' 00:00:00';
$end_time = date('Y-m-d', strtotime("$start_time+1 month -1 day")) . ' 23:59:59';
//获取今年日期
$start_time = date('Y-01-01', time());
$end_time = date('Y-m-d', strtotime("$start_time+1 year -1 day"));

时间转换

一、将日期转换成距今多长时间

/*** 将日期转换成距今多长时间* @param $show_time 日期时间* @param $now_time  当前时间* @return false|int|string*/
function time_distance($show_time)
{if (!$show_time) {return '';}$show_time = (!is_numeric($show_time)) ? strtotime($show_time) : $show_time;$now_time = time();$dur = $now_time - $show_time;if ($dur < 0) {return $show_time;} else {if ($dur < 10) {return '刚刚';} else if ($dur < 60) {return $dur . '秒前';} else {if ($dur < 3600) {return floor($dur / 60) . '分钟前';} else {if ($dur < 86400) {return floor($dur / 3600) . '小时前';} else {return date_change($show_time);}}}}
}//转变时间
function date_change($date)
{if (!$date) {return '';}$date = (!is_numeric($date)) ? strtotime($date) : $date;if (date('Ymd', $date) == date('Ymd', time())) {return date('H:i', $date);} else if (date('Ymd', $date) == date('Ymd', strtotime('-1 day'))) {return "昨天 " . date('H:i', $date);} else if (date('Y', $date) == date('Y', time())) {return date('m月d日', $date);} else {return date('Y年m月d日', $date);}
}
//示例
$start_time='2024-05-31 16:23:56';
$data= time_distance($start_time);
//结果
55分钟前
1小时前

这篇关于PHP 操作日期各种转换,常见日期转换,涉及聊天时间转换、涉及日周月年转换、涉及到图表日期转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1028670

相关文章

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4