实用PHP函数介绍:日期和时间处理函数详解
日期和时间处理在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> </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']);
以上是常见的日期和时间处理函数,它们让日期和时间的操作非常方便和灵活。在实际应用中,需要根据具体的需求选择合适的函数和格式,以达到 的效果。
