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

news2025/1/18 17:03:54

文章目录

  • 前言
  • 一、时间日期与时区
    • 1.1 时间与日期
    • 1.2 时区
  • 二、 30个日期时间函数的用法示例
    • 2.1 获取当前的时间戳
    • 2.2 将时间戳格式化为日期时间
    • 2.3 获取当前的日期
    • 2.4 获取当前的时间
    • 2.5 获取当前年份
    • 2.6 获取当前月份
    • 2.7 获取当前日期的第几天
    • 2.8 计算两个日期之间的天数差
    • 2.9 计算两个日期之间的月份数差
    • 2.10 计算两个日期之间的年数差
    • 2.11. 获取当前月份的第一天
    • 2.12 获取当前月份的最后一天
    • 2.13 获取昨天的日期
    • 2.14 获取明天的日期
    • 2.15 获取一周前的日期
    • 2.16 获取一周后的日期
    • 2.17 获取一个月前的日期
    • 2.18 获取一个月后的日期
    • 2.19 判断一个日期是否是闰年
    • 2.20 获取下一个周日的日期
    • 2.21 获取下一个周一的日期
    • 2.22 获取本月的第一个周日的日期
    • 2.23 获取本月的第一个周一的日期
    • 2.24 获取本月的最后一个周日的日期
    • 2.25 获取本月的最后一个周一的日期
    • 2.26 判断一个日期是星期几
    • 2.27 获取两个时间之间的时间差
    • 2.28 获取上一个工作日的日期
    • 2.29 获取下一个工作日的日期
    • 2.30 获取本月有多少个工作日
  • 总结


前言

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

一、时间日期与时区

1.1 时间与日期

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

  • date(): 将Unix时间戳转换成可读的日期/时间格式。例如:
echo date("Y/m/d"); // 输出:2022/02/18
  • time(): 返回当前时间的Unix时间戳(从1970年1月1日00:00:00 UTC起)。例如:
echo time(); // 输出当前时间的时间戳
  • strtotime(): 将日期/时间字符串转换成时间戳。例如:
echo strtotime("2022-02-18 12:00:00"); // 输出:1645209600
  • mktime(): 根据指定的日期和时间生成时间戳。例如:
echo mktime(0, 0, 0, 2, 18, 2022); // 输出:1645104000
  • strftime(): 将日期/时间格式化为本地化字符串。例如:
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;

总结

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

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

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

相关文章

央媒报道的长与短

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体 胡老师。 在最近的媒体服务中&#xff0c;遇到一个问题&#xff0c;与大家讨论下&#xff0c;很多媒体特别是央媒&#xff0c;在活动报道中不会完全按照新闻稿通稿的内容去报道&#xff0c;有的会根…

MQ选型,kafka、RocketMQ、RabbitMQ、ActiveMQ

MQ&#xff08;Message Queue&#xff09;&#xff0c;是基础数据结构中“先进先出”的一种数据结构。指把要传输的数据&#xff08;消息&#xff09;放在队列中&#xff0c;用队列机制来实现消息传递——生产者产生消息并把消息放入队列&#xff0c;然后由消费者去处理。消费者…

java SimpleDateFormat和Calendar日期类

目录一、SimpleDateFormat使用二、Calendar使用一、SimpleDateFormat使用 使用Date直接输出日期时&#xff0c;是使用系统默认的格式输出&#xff0c;所以需要使用SimpleDateFormat来格式化日期。 那么SimpleDateFormat类怎么使用呢&#xff0c;我们需要先了解此类的格式化符号…

Codeforces Round 866 (Div. 2) 题解

目录 A. Yuras New Name&#xff08;构造&#xff09; 思路&#xff1a; 代码&#xff1a; B. JoJos Incredible Adventures&#xff08;构造&#xff09; 思路&#xff1a; 代码&#xff1a; C. Constructive Problem&#xff08;思维&#xff09; 思路&#xff1a; 代…

一、计算机的发展历史

一、计算机的发展历史 第一台现代计算机 ENIAC&#xff1a;世界上第一台现代通用电子数字计算机&#xff0c;诞生于1946年2月14日的美国宾夕法尼亚大学。研制电子计算机的想法产生于第二次世界大战进行期间。当时激战正酣&#xff0c;各国的武器装备还很差&#xff0c;占主要地…

Java垃圾收集原理

程序计数器、虚拟机栈、本地方法栈这三个区域随线程而灭&#xff0c;栈中栈帧的内存大小也是在确定的。这几个区域的内存分配和回收都具有确定性&#xff0c;因此不需要过多考虑如何回收。 Java堆和方法区这两个区域有着很显著的不确定性 一个接口的实现类需要的内存可能不一…

软考第七章 下一代互联网

下一代互联网 1.IPv6 IPv4的缺陷&#xff1a; 网络地址短缺路由速度慢&#xff0c;IPv4头部多达13个字段&#xff0c;路由器处理的信息量很大缺乏安全功能不支持新的业务模式 关于PIv6的研究成果都包含在1998年12月发表的RFC 2460文档中 1.1 IPv6分组格式 版本&#xff1a…

量子退火Python实战(3):投资组合优化(Portfolio) MathorCup2023特供PyQUBO教程

文章目录前言一、什么是投资组合优化&#xff1f;二、投资组合优化建模1. 目标函数&#xff1a;回报2.约束函数&#xff1a;风险3.最终优化目标函数三、基于PyQUBO实现1. 获取数据2. 数据处理3. 目标函数PyQUBO实现4. OpenJij实施优化总结前言 提示&#xff1a;包含pyQUBO用法…

硬件语言Verilog HDL牛客刷题day11 A里部分 和 Z兴部分

1.VL72 全加器 1.题目&#xff1a; ① 请用题目提供的半加器实现全加器电路① 半加器的参考代码如下&#xff0c;可在答案中添加并例化此代码。 2. 解题思路 &#xff08;可以看代码&#xff09; 2.1 先看 半加器 s 是加位 &#xff0c; C 是进位。 2.2 再看全加器 …

2023年新手如何选择云服务器配置来部署自己的网站?

现在做网站的人越来越少了&#xff0c;没有以前那种百万网站站长的势头。但是&#xff0c;不论个人站长还是企业&#xff0c;只要网上开展业务其实都会需要自己网站或小程序、APP等平台。如今&#xff0c;很少有人使用虚拟主机&#xff0c;但是独立服务器成本高&#xff0c;一般…

【2023】Kubernetes-网络原理

目录kubernetes网络模型kubernetes网络实现容器到容器之间通信Pod之间的通信Pod到Service之间的通信集群内部与外部组件之间的通信开源容器网络方案FlannelCalicokubernetes网络模型 Kubernetes网络模型设计的一个基础原则是&#xff1a;每个Pod都拥有一个独立的IP地址&#x…

异地远程访问本地SQL Server数据库【无公网IP内网穿透】

文章目录1.前言2.本地安装和设置SQL Server2.1 SQL Server下载2.2 SQL Server本地连接测试2.3 Cpolar内网穿透的下载和安装2.3 Cpolar内网穿透的注册3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置4.公网访问测试5.结语转发自CSDN远程穿透的文章&#xff1a;无需公网IP&a…

哪吒探针 - Windows 和Linux端agent安装(详细注意版)

一、Windows端agent安装配置 环境准备 环境: Windows 服务器软件:哪吒探针点击下载、nssm 点击下载(探针agent和nssm都要下载准备好) 设置环境变量下载软件后&#xff0c;解压到任意位置&#xff0c;然后按 winR 打开运行窗口&#xff0c;输入 sysdm.cpl 打开系统属性–>高级…

基于GIS/SCADA的智慧燃气数字孪生Web3D可视化系统

在低碳经济快速发展的今天&#xff0c;天然气在我国能源结构的占比逐年提高&#xff0c;安全供气成为关乎民生福祉、经济发展和社会和谐的大事。 自我国开展燃气铺设以来&#xff0c;经过长期运营的家用燃气和工业燃气设备管道设施设备基础差、检维修难度大&#xff0c;且传统燃…

[Java Web]会话跟踪技术

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;Java Web 目录1、会话跟踪技术概述2、数据共享3、Cookie4、Session5、Cookie和Session的区别6、总结1、会话跟踪…

大数据应用——Hadoop运行模式(伪分布式运行)

4.2 伪分布式运行模式4.2.1 启动HDFS并运行MapReduce程序1. 分析 &#xff08;1&#xff09;配置集群&#xff08;2&#xff09;启动、测试集群增、删、查没有改&#xff08;多台机子麻烦&#xff09;&#xff08;3&#xff09;执行WordCount案例2. 执行步骤&#xff08;1&…

NestJS:TypeORM 连接mysql数据库,增删改查

一、安装数据库相关模块 pnpm add nestjs/typeorm typeorm mysql package.json 二、navicat创建nestjs_base数据库&#xff0c;创建products数据表&#xff0c;添加记录 创建nestjs数据库&#xff0c;创建products数据表 navicat&#xff1a;连接MySQL&#xff0c;创建库、表…

【GPT4】微软 GPT-4 测试报告(1)总体介绍

欢迎关注【youcans的AGI学习笔记】原创作品&#xff0c;火热更新中 微软 GPT-4 测试报告&#xff08;1&#xff09;总体介绍 微软 GPT-4 测试报告&#xff08;2&#xff09;多模态与跨学科能力 微软 GPT-4 测试报告&#xff08;3&#xff09;编程能力 微软 GPT-4 测试报告&…

腾讯云SSL证书格式类型及服务器支持说明

腾讯云SSL证书支持服务器类型有Tomcat、Apache、Nginx、IIS等&#xff0c;SSL证书格式包括crt、key、pfx、JKS、pem等格式&#xff0c;腾讯云百科整理了腾讯云SSL证书支持服务器类型格式对照表&#xff1a; 腾讯云SSL证书格式和服务器支持对照表 腾讯云SSL证书格式和服务器支持…

数据库系统工程师——第三章 数据结构与算法

文章目录&#x1f4c2; 第三章、数据结构与算法 &#x1f4c1; 3.1 线性结构 &#x1f4d6; 3.1.1 线性表 &#x1f4d6; 3.1.2 栈和队列 &#x1f4d6; 3.1.3 串 &#x1f4c1; 3.2 数组和矩阵 &#x1f4c1; 3.3 树和图 &#x1f4d6; 3.3.1 树 &#x1f4d6; 3.3.2 图 &…