当前位置: 首页 > news >正文

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 $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小时前

相关文章:

  • Unity 之 Android 【获取设备的序列号 (Serial Number)/Android_ID】功能的简单封装
  • js使用链表实现音乐播放器(新增,下一首播放,置顶,删除)
  • Python中的魔法函数
  • Flutter 中的 CupertinoSliverNavigationBar 小部件:全面指南
  • 可能会引起空指针
  • 汇编原理(二)寄存器——内存访问
  • 工业通信原理——LVDS通信原理
  • QT:信号与槽
  • VMware虚拟机安装Open Euler
  • Linux基本命令的使用(cp mv)
  • PDF高效编辑器革新:一键智能转换PDF至HTML,轻松开启文件处理全新时代!
  • 透视AI技术:探索折射技术在去衣应用中的奥秘
  • 期权交易有什么利弊点?
  • 【EmguCV安装及使用】
  • golang中的md5、sha256数据加密文件md5/sha256值计算步骤和运行内存图解
  • Kafka自定义分区器编写教程
  • 20240529每日前端--------vue数组对象包含数组,判断子数组是否有重复对象
  • 计算机网络- 特定服务类型(Type of Service, TOS) 服务质量(Quality of Service, QoS)
  • express处理get请求和post请求
  • K8s service 进阶
  • 泽连斯基公布与特朗普会晤细节,强调实现全面、无条件停火
  • 玉渊谭天丨“稀土管制让美国慌了”,美军工稀土储备仅够数月
  • 江苏、安徽跨省联动共治“样板间”:进一扇门可办两省事
  • 广州多条BRT相关线路将停运,全市BRT客运量较高峰时大幅下降
  • 魔都眼丨人形机器人“华山论剑”:拳击赛缺席,足球赛抢镜
  • 全国首例!上市公司董监高未履行公开增持承诺,投资者起诉获赔