@TOC
前言
本文已收录于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 中设置时区代码可以使用以下代码:
其中,时区代码可以是任何有效的时区标识符,如 'UTC'、'Asia/Shanghai' 等。可以使用 PHP 内置函数 timezone_identifiers_list() 查看所有可用的时区列表。例如,以下代码将时区设置为中国上海:date_default_timezone_set('时区代码');
注意:在使用日期和时间相关函数之前,应该先设置时区。否则可能会出现不正确的结果。date_default_timezone_set('Asia/Shanghai');
二、 30个日期时间函数的用法示例
2.1 获取当前的时间戳
$timestamp = time(); echo $timestamp;
2.2 将时间戳格式化为日期时间
$timestamp = time(); { mathJaxContainer[0]}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';
{
mathJaxContainer[1]}end_date) - strtotime($start_date)) / (60 * 60 * 24);
echo $diff_days;
2.9 计算两个日期之间的月份数差
$start_date = '2021-01-01';
$end_date = '2021-03-31';
{
mathJaxContainer[2]}end_date))) - intval(date('Y', strtotime($start_date)))) * 12;
{
mathJaxContainer[3]}start_date)));
{
mathJaxContainer[4]}end_date)));
echo $diff_months;
2.10 计算两个日期之间的年数差
$start_date = '2021-01-01';
$end_date = '2025-12-31';
{
mathJaxContainer[5]}start_date)));
{
mathJaxContainer[6]}end_date)));
{
mathJaxContainer[7]}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';
{
mathJaxContainer[8]}date)));
{
mathJaxContainer[9]}year % 4 == 0 && {
mathJaxContainer[10]}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';
{
mathJaxContainer[11]}date));
echo '星期' . intval($day_of_week);
2.27 获取两个时间之间的时间差
$start_time = '2021-10-01 08:00:00';
$end_time = '2021-10-01 17:00:00';
{
mathJaxContainer[12]}end_time) - strtotime($start_time);
{
mathJaxContainer[13]}diff_time / (60 * 60));
{
mathJaxContainer[14]}diff_time - $hours * 60 * 60) / 60);
{
mathJaxContainer[15]}diff_time % 60;
echo {
mathJaxContainer[16]}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 ({
mathJaxContainer[17]}current_month_first_day); {
mathJaxContainer[18]}current_month_last_day); $i += 86400) {
{
mathJaxContainer[19]}i);
if ({
mathJaxContainer[20]}weekday <= 5) {
$current_month_working_days++;
}
}
echo $current_month_working_days;
2.31 获取指定日期的前一天日期
$date = '2022-01-01';
{
mathJaxContainer[21]}date) - 24*3600);
echo $yesterday;
总结
以上就是关于本篇文章介绍的内容,时间日期与时区,后续更多内容将收录在专栏PHP快速入门与实战中,感谢大家支持。