文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP快速入门05-时间日期与时区,附30个常用案例

2024-01-21 16:15

关注

文章目录


前言

本文已收录于PHP全栈系列专栏:PHP快速入门与实战
在这里插入图片描述

一、时间日期与时区

1.1 时间与日期

PHP中的日期和时间处理功能极其强大,包括了多种格式化、解析、比较等常用操作。以下是常用的函数:

echo date("Y/m/d"); // 输出:2022/02/18
echo time(); // 输出当前时间的时间戳
echo strtotime("2022-02-18 12:00:00"); // 输出:1645209600
echo mktime(0, 0, 0, 2, 18, 2022); // 输出:1645104000
setlocale(LC_TIME, "zh_CN.utf8"); echo strftime("%Y年%m月%d日 %H:%M:%S"); // 输出:2022年02月18日 11:30:00

1.2 时区

在 PHP 中设置时区代码可以使用以下代码:

date_default_timezone_set('时区代码');

其中,时区代码可以是任何有效的时区标识符,如 ‘UTC’、‘Asia/Shanghai’ 等。可以使用 PHP 内置函数 timezone_identifiers_list() 查看所有可用的时区列表。例如,以下代码将时区设置为中国上海:

date_default_timezone_set('Asia/Shanghai');

注意:在使用日期和时间相关函数之前,应该先设置时区。否则可能会出现不正确的结果。

二、 30个日期时间函数的用法示例

2.1 获取当前的时间戳

$timestamp = time();
echo $timestamp;

2.2 将时间戳格式化为日期时间

$timestamp = time();
$date_time = date('Y-m-d H:i:s', $timestamp);
echo $date_time;

2.3 获取当前的日期

$current_date = date('Y-m-d');
echo $current_date;

2.4 获取当前的时间

$current_time = date('H:i:s');
echo $current_time;

2.5 获取当前年份

$current_year = date('Y');
echo $current_year;

2.6 获取当前月份

$current_month = date('m');
echo $current_month;

2.7 获取当前日期的第几天

$current_day = date('j');
echo $current_day;

2.8 计算两个日期之间的天数差

$start_date = '2021-01-01';
$end_date = '2021-01-31';
$diff_days = (strtotime($end_date) - strtotime($start_date)) / (60 * 60 * 24);
echo $diff_days;

2.9 计算两个日期之间的月份数差

$start_date = '2021-01-01';
$end_date = '2021-03-31';
$diff_months = (intval(date('Y', strtotime($end_date))) - intval(date('Y', strtotime($start_date)))) * 12;
$diff_months -= intval(date('m', strtotime($start_date)));
$diff_months += intval(date('m', strtotime($end_date)));
echo $diff_months;

2.10 计算两个日期之间的年数差

$start_date = '2021-01-01';
$end_date = '2025-12-31';
$start_year = intval(date('Y', strtotime($start_date)));
$end_year = intval(date('Y', strtotime($end_date)));
$diff_years = $end_year - $start_year;
echo $diff_years;

2.11. 获取当前月份的第一天

$current_month_first_day = date('Y-m-01');
echo $current_month_first_day;

2.12 获取当前月份的最后一天

$current_month_last_day = date('Y-m-t');
echo $current_month_last_day;

2.13 获取昨天的日期

$yesterday = date('Y-m-d', strtotime('-1 day'));
echo $yesterday;

2.14 获取明天的日期

$tomorrow = date('Y-m-d', strtotime('+1 day'));
echo $tomorrow;

2.15 获取一周前的日期

$a_week_ago = date('Y-m-d', strtotime('-1 week'));
echo $a_week_ago;

2.16 获取一周后的日期

$a_week_later = date('Y-m-d', strtotime('+1 week'));
echo $a_week_later;

2.17 获取一个月前的日期

$a_month_ago = date('Y-m-d', strtotime('-1 month'));
echo $a_month_ago;

2.18 获取一个月后的日期

$a_month_later = date('Y-m-d', strtotime('+1 month'));
echo $a_month_later;

2.19 判断一个日期是否是闰年

$date = '2020-01-01';
$year = intval(date('Y', strtotime($date)));
$is_leap_year = ($year % 4 == 0 && $year % 100 != 0) || $year % 400 == 0;
echo $is_leap_year ? '是闰年' : '不是闰年';

2.20 获取下一个周日的日期

$next_sunday = date('Y-m-d', strtotime('next Sunday'));
echo $next_sunday;

2.21 获取下一个周一的日期

$next_monday = date('Y-m-d', strtotime('next Monday'));
echo $next_monday;

2.22 获取本月的第一个周日的日期

$current_month_first_sunday = date('Y-m-d', strtotime('first Sunday of ' . date('F Y')));
echo $current_month_first_sunday;

2.23 获取本月的第一个周一的日期

$current_month_first_monday = date('Y-m-d', strtotime('first Monday of ' . date('F Y')));
echo $current_month_first_monday;

2.24 获取本月的最后一个周日的日期

$current_month_last_sunday = date('Y-m-d', strtotime('last Sunday of ' . date('F Y')));
echo $current_month_last_sunday;

2.25 获取本月的最后一个周一的日期

$current_month_last_monday = date('Y-m-d', strtotime('last Monday of ' . date('F Y')));
echo $current_month_last_monday;

2.26 判断一个日期是星期几

$date = '2021-10-01';
$day_of_week = date('N', strtotime($date));
echo '星期' . intval($day_of_week);

2.27 获取两个时间之间的时间差

$start_time = '2021-10-01 08:00:00';
$end_time = '2021-10-01 17:00:00';
$diff_time = strtotime($end_time) - strtotime($start_time);
$hours = intval($diff_time / (60 * 60));
$minutes = intval(($diff_time - $hours * 60 * 60) / 60);
$seconds = $diff_time % 60;
echo $hours . '小时' . $minutes . '分钟' . $seconds . '秒';

2.28 获取上一个工作日的日期

$last_working_day = date('Y-m-d', strtotime('-1 weekday'));
echo $last_working_day;

2.29 获取下一个工作日的日期

$next_working_day = date('Y-m-d', strtotime('+1 weekday'));
echo $next_working_day;

2.30 获取本月有多少个工作日

$current_month_working_days = 0;
$current_month_first_day = date('Y-m-01');
$current_month_last_day = date('Y-m-t');
for ($i = strtotime($current_month_first_day); $i <= strtotime($current_month_last_day); $i += 86400) {
    $weekday = date('N', $i);
    if ($weekday >= 1 && $weekday <= 5) {
        $current_month_working_days++;
    }
}
echo $current_month_working_days;

2.31 获取指定日期的前一天日期

$date = '2022-01-01'; 
$yesterday = date('Y-m-d', strtotime($date) - 24*3600); 
echo $yesterday;

总结

以上就是关于本篇文章介绍的内容,时间日期与时区,后续更多内容将收录在专栏PHP快速入门与实战中,感谢大家支持。

来源地址:https://blog.csdn.net/qq_21891743/article/details/130118248

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯