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

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3