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

文章目录

  • 前言
  • 一、时间日期与时区
    • 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 获取本月有多少个工作日
    • 2.31 获取指定日期的前一天日期
  • 总结


前言

本文已收录于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;

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

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

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【生活工作经验 十】ChatGPT模型对话初探

最近探索了下全球大火的ChatGPT&#xff0c;想对此做个初步了解 一篇博客 当今社会&#xff0c;自然语言处理技术得到了迅速的发展&#xff0c;人工智能技术也越来越受到关注。其中&#xff0c;基于深度学习的大型语言模型&#xff0c;如GPT&#xff08;Generative Pre-train…

Java:MybatisPlus--条件构造器

1、条件构造器类别 ①wrapper&#xff1a;抽象类&#xff0c;条件类的顶层&#xff0c;提供了一些获取和判断相关的方法。 ②AbstractWrapper&#xff1a;抽象类&#xff0c;Wrapper的子类&#xff0c;提供了所有的条件相关方法。 ③AbstractLambdaWrapper&#xff1a;抽象类…

Tinymce富文本编辑器在vue项目中的使用;引入第三方插件和上传视频、图片等

先放张效果图 第一步&#xff1a;安装依赖 npm install tinymce5.0.12 第二步&#xff1a;在项目中的public文件夹中新建tinymce文件夹&#xff08;因为我的项目是脚手架创建的&#xff0c;所以公共文件夹是public&#xff09;&#xff1b;在node_modules中找到skins文件夹复制…

Java day11

第11章 在用户界面上排列组件 11.1 基本的界面布局11.1.1 布置界面11.1.2 顺序布局11.1.3 方框布局11.1.4 网格布局11.1.5 边框布局 11.2 使用多个布局管理器11.3 卡片布局11.3.1 在应用程序中使用卡片布局11.3.2 单元格内边距和面板内边距 11.1 基本的界面布局 11.1.1 布置界…

社科院与杜兰大学中外合作办学金融管理硕士项目——比起过往,前路更值得期待

当结束一天工作陷入沉思时&#xff0c;你有没有特别遗憾的事情呢&#xff0c;人生有太多的不确定性&#xff0c;比起过往&#xff0c;未知的人生更值得我们期待。与其懊恼没完成的遗憾&#xff0c;不如珍惜当下&#xff0c;努力创造未来。人生没有太晚的开始&#xff0c;在职读…

macOS设置环境变量和别名

因为我的mac所用shell是bash&#xff0c;所以本文中涉及的环境变量和别名配置均在~/.zshrc文件中,且在每次配置完成后&#xff0c;需要执行source ~/.zshrc命令使配置文件生效 环境变量 通过配置环境变量&#xff0c;我们可以将某个路径暴露到全局&#xff0c;这样可以在全局…

【C语言学习3——基本的C语言语法知识2】

C语言学习3——基本的C语言语法知识 标识符关键词什么是字面常量&#xff1f;printf函数printf函数更多用法 #include命令 标识符 在前面的代码中&#xff0c;由我们自己命名&#xff0c;用于指代某一个实体的名称&#xff0c;例如:add&#xff0c;result&#xff0c;函数的参…

android studio ImageView和ImageButton和Button

1.ImageView 1.1代码显示 ImageView img findViewById(R.id.img); img.setImageResource(R.drawable.apple); 1.2XML <ImageViewandroid:layout_width"match_parent"android:layout_height"match_parent"android:id"id/img"android:src&qu…

连接云服务器

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

实现开机动画和自定义Toolbar的高级写法

需求是自定义一个Toolbar和全屏展示一个第一次激活App的开机动画 1自定义Toolbar的使用 1仍然是先将工程的theme.xml中设置成NoActionBar <resources xmlns:tools"http://schemas.android.com/tools"><!-- Base application theme. --><style name&…

Spring原理学习(五):一篇讲清楚动态代理(jdk和cglib)的使用、原理和源码

目录 一、jdk动态代理的基本使用 二、cglib动态代理的基本使用 2.1 方法一&#xff1a;method.invoke() 方法反射调用 2.2 方法二&#xff08;spring使用的这个方法&#xff09;&#xff1a; methodProxy.invoke() 2.3 方法三&#xff1a;methodProxy.invokeSuper() 三、…

ChatGPT API接口使用+fine tune微调+prompt介绍

目录 1 接口调用1.1 生成key1.2 接口功能1.2.1 图片生成 (image generation)1.2.2 对话(chat)1.2.3 中文纠错 (Chinese Spelling Correct)1.2.4 关键词提取 &#xff08;keyword extract)1.2.5 抽取文本向量 (Embedding)1.2.6 微调 (fine tune) 2 如何写好prompt2.1分类任务2.2…

Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCVSharp实现图像的拉普拉斯算法增强(C#)

Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCVSharp实现图像的拉普拉斯算法增强&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机使用图像算法增加图像的技术背景Baumer工业相机通过BGAPI SDK联合OpenCV使用图像增强算法1.引用合适的类文件2.BGAPI SDK在图像回…

【C++】从string开始了解STL

文章目录 1.初识STL1.什么是STL2.STL的版本3.STL的六大组件 2.string1.string类模板2.string类的构造函数3.string内部数据访问4.string的遍历5.string类的迭代器6.string的Capacity相关接口7.string的修改相关接口8.其他接口 1.初识STL 1.什么是STL STL(standard template l…

openpnp - 顶部相机 - 辅助光(环形灯)的电路原理图

文章目录 openpnp - 顶部相机 - 辅助光(环形灯)的电路原理图概述END openpnp - 顶部相机 - 辅助光(环形灯)的电路原理图 概述 同学帮我做的简易灯板设计不太合理, 发热量极大. 想看看商用的环形灯电路啥样的, 如果有可能, 自己做块灯板, 塞进商用环形灯外壳中. 拆解了一个环形…

从TOP25榜单,看半导体之变

据SIA报告显示&#xff0c;2022年全球半导体销售额创历史新高达到5740亿美元。尽管2022年下半年&#xff0c;半导体市场出现了周期性的低迷&#xff0c;但其全年的销售额相较2021年增长了3.3%。 近日&#xff0c;市调机构Gartner发布了全球以及中国大陆TOP25名半导体厂商的排名…

【软考数据库】第二章 程序语言基础知识

目录 2.1 程序设计语言的基本概念2.2 程序设计语言的基本成分2.3 编译程序基本原理 前言&#xff1a; 笔记来自《文老师软考数据库》教材精讲&#xff0c;精讲视频在b站&#xff0c;某宝都可以找到&#xff0c;个人感觉通俗易懂。 2.1 程序设计语言的基本概念 程序设计语言是…

《3-链表》

链表 引言&#xff1a; 存储数组需要内存空间连续&#xff0c;当我们需要申请一个很大的数组时&#xff0c;系统不一定存在这么大的连续内存空间。 而链表则更加灵活&#xff0c;不需要内存是连续的&#xff0c;只要剩余内存空间大小够用即可 1.定义 &#xff1a; 「链表 Lin…

文本批量翻译-批量翻译文件名

批量将英文翻译成中文的软件 批量将英文翻译成中文的软件的主要用途场景主要是在需要大量翻译英文文本到中文的场景下使用&#xff0c;例如&#xff1a; 商务文件翻译&#xff1a;许多企业需要将其商务文件&#xff0c;如合同、报告、信函等翻译成中文&#xff0c;以便其中文读…

Vulnhub项目:MrRobot

靶机地址&#xff1a;Mr-Robot: 1 ~ VulnHub 渗透过程&#xff1a; 先看描述&#xff0c;有3跟keys在这个靶机中 首先确定靶机ip&#xff0c;对靶机开放的端口进行探测 访问靶机地址&#xff0c;出现了很酷炫的web界面&#xff0c;这个mr.robot,是一个美剧&#xff0c;还是挺…