欢迎访问宙启技术站
智能推送

实用PHP函数介绍:日期和时间处理函数详解

发布时间:2023-06-22 15:16:33

日期和时间处理在Web开发中非常常见。PHP提供了很多内置的日期和时间处理函数,它们能够轻松地处理日期和时间的各种格式、计算、格式化和比较。

本文将介绍PHP中常见的日期和时间处理函数,包括日期格式化、日期计算、时区转换、本地化、相对时间、Unix时间戳和日历等。

1.日期格式化函数

PHP中的日期格式化函数能够把日期转换为不同的格式,常用的有strftime()、date()、gmstrftime()等。

strftime()函数格式化当前时间:

// 显示 “2020年07月20日 星期一”
echo strftime("%Y年%m月%d日 %A");

date()函数也可以格式化当前时间:

// 显示 “2020年07月20日 星期一”
echo date("Y年m月d日 l");

gmstrftime()用法和strftime()类似,区别在于它使用的是GMT时间。

2.日期计算函数

PHP中的日期计算函数能够对日期进行加减、比较、截取等运算。

下面是对当前日期加上10天后的日期:

$current_date = date("Y-m-d"); // 当前日期

// 加上10天计算
$new_date = date('Y-m-d', strtotime($current_date. '+10 days'));
  
// 显示 “2020-07-30”
echo $new_date;

下面是比较两个日期的大小:

$date1 = date('Y-m-d');
$date2 = '2020-07-30';

if (strtotime($date1) > strtotime($date2)) {
    echo 'date1比date2时间晚';
} else {
    echo 'date1比date2时间早';
}

3.时区转换函数

PHP中的时区转换函数能够把不同时区的时间转换成所需的时区,常用的有date_default_timezone_set()、gmdate()、date()等。

下面是设置时区为中国(+8时区):

date_default_timezone_set('Asia/Shanghai');

下面是GMT时间转换为本地时间:

$gmt_time = '2020-07-20 12:00:00'; // GMT时间
$timestamp = strtotime($gmt_time); // 转换为时间戳
$local_time = date('Y-m-d H:i:s', $timestamp); // 转换为本地时间

// 显示本地时间
echo $local_time;

4.本地化函数

PHP中的本地化函数能够把日期和时间格式化为适合本地文化的方式,常用的有strftime()、setlocale()等。

下面是设置本地文化为中文并格式化日期:

setlocale(LC_ALL, 'zh_CN.utf8'); // 设置本地文化为中文
echo strftime("%Y年%m月%d日 %A");

5.相对时间函数

PHP中的相对时间函数能够把日期和时间表示为过去或将来的时间,常用的有time_elapsed_string()等。

下面是显示距离当前时间的相对时间:

function time_elapsed_string($datetime, $full = false) {
    $now = new DateTime;
    $ago = new DateTime($datetime);
    $diff = $now->diff($ago);
    $diff->w = floor($diff->d / 7);
    $diff->d -= $diff->w * 7;
    $string = array(
        'y' => 'year',
        'm' => 'month',
        'w' => 'week',
        'd' => 'day',
        'h' => 'hour',
        'i' => 'minute',
        's' => 'second',
    );
    foreach ($string as $k => &$v) {
        if ($diff->$k) {
            $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
        } else {
            unset($string[$k]);
        }
    }
    if (!$full) $string = array_slice($string, 0, 1);
    return $string ? implode(', ', $string) . ' ago' : 'just now';
}

// 显示 “1 year, 1 month ago”
echo time_elapsed_string('2019-06-20 12:00:00');

6.Unix时间戳函数

PHP中的Unix时间戳函数常用于把日期和时间转换为Unix时间戳,以及把Unix时间戳转换为日期和时间,常用的有time()、mktime()等。

下面是把当前时间转换为Unix时间戳:

$timestamp = time();
  
// 显示时间戳
echo $timestamp;

下面是把日期和时间转换为Unix时间戳:

$date = '2020-07-20';
$timestamp = strtotime($date);
  
// 显示时间戳
echo $timestamp;

下面是把Unix时间戳转换为日期和时间:

$timestamp = 1595227200; // 时间戳
  
// 转换为日期和时间
$date = date('Y-m-d H:i:s', $timestamp);
  
// 显示日期和时间
echo $date;

7.日历函数

PHP中的日历函数能够生成日历和日期选择器,常用的有cal_days_in_month()、cal_info()、date_sun_info()等。

cal_days_in_month()函数用于计算给定年份和月份的天数,可以很方便地生成日历:

// 显示2020年7月的日历
$days = cal_days_in_month(CAL_GREGORIAN, 7, 2020); // 获取2020年7月的天数
echo '<table>';
echo '<tr><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th><th>Sun</th></tr>';
for ($i = 1; $i <= $days;) {
    echo '<tr>';
    for ($j = 1; $j <= 7; $j++, $i++) {
        if ($i <= $days) {
            echo "<td>$i</td>";
        } else {
            echo '<td>&nbsp;</td>';
        }
    }
    echo '</tr>';
}
echo '</table>';

cal_info()函数用于返回各种日历系统的信息:

$info = cal_info(CAL_GREGORIAN); // 获取公历信息
  
// 显示公历信息
echo '<pre>';
print_r($info);
echo '</pre>';

date_sun_info()函数用于返回太阳和日出日落的时间:

$timestamp = strtotime('today'); // 获取当天时间戳
  
// 获取日出日落时间
$sun_info = date_sun_info($timestamp, 31.2388218, 121.4895232); // 上海市的经纬度
  
// 显示日出日落时间
echo 'Sunrise: ' . date('H:i:s', $sun_info['sunrise']) . '<br>';
echo 'Sunset: ' . date('H:i:s', $sun_info['sunset']);

以上是常见的日期和时间处理函数,它们让日期和时间的操作非常方便和灵活。在实际应用中,需要根据具体的需求选择合适的函数和格式,以达到 的效果。