PHP localtime()函数

localtime() 函数返回一个数组,包含本地时间的各个组成部分。它接受一个时间戳作为参数,并返回一个结构化的时间数组,类似于C语言的tm结构。

语法

localtime([int $timestamp = time()[, bool $is_associative = false]])

参数说明

参数 描述
timestamp

可选。 指定要解析的时间戳。默认是当前时间 time()。

is_associative

可选。 如果设置为 true,函数返回一个关联数组,否则返回索引数组。

默认为 false,返回索引数组。

返回值

返回一个数组,包含本地时间的各个组成部分。如果 is_associative 为 false,返回索引数组;如果为 true,返回关联数组。

索引数组的元素(当 is_associative = false 时)

索引 键名(关联数组时) 描述
0 tm_sec 秒数,0 到 59
1 tm_min 分钟数,0 到 59
2 tm_hour 小时数,0 到 23
3 tm_mday 月份中的第几天,1 到 31
4 tm_mon 月份,0(一月)到 11(十二月)
5 tm_year 年份,从1900年开始的年数(如2023年返回123)
6 tm_wday 星期几,0(星期日)到 6(星期六)
7 tm_yday 一年中的第几天,0 到 365
8 tm_isdst 夏令时标志,正值表示夏令时,0表示非夏令时,负数表示未知

示例

示例 1:返回索引数组(默认)

<?php
$local_time = localtime();
print_r($local_time);
// 输出类似:
// Array
// (
//     [0] => 30     // 秒
//     [1] => 15     // 分
//     [2] => 14     // 时
//     [3] => 25     // 日
//     [4] => 7      // 月(0-11,7表示8月)
//     [5] => 123    // 年(2023-1900=123)
//     [6] => 5      // 星期几(5表示星期五)
//     [7] => 236    // 一年中的第几天
//     [8] => 0      // 夏令时标志
// )
?>

示例 2:返回关联数组

<?php
$local_time = localtime(time(), true);
print_r($local_time);
// 输出类似:
// Array
// (
//     [tm_sec] => 30
//     [tm_min] => 15
//     [tm_hour] => 14
//     [tm_mday] => 25
//     [tm_mon] => 7
//     [tm_year] => 123
//     [tm_wday] => 5
//     [tm_yday] => 236
//     [tm_isdst] => 0
// )
?>

示例 3:使用特定时间戳

<?php
$timestamp = strtotime("2023-12-25 10:30:45");
$local_time = localtime($timestamp, true);

echo "圣诞节的时间信息:<br>";
echo "时:" . $local_time['tm_hour'] . "<br>";
echo "分:" . $local_time['tm_min'] . "<br>";
echo "秒:" . $local_time['tm_sec'] . "<br>";
echo "日:" . $local_time['tm_mday'] . "<br>";
echo "月:" . ($local_time['tm_mon'] + 1) . "<br>";
echo "年:" . ($local_time['tm_year'] + 1900) . "<br>";
echo "星期:" . $local_time['tm_wday'] . "<br>";

// 输出:
// 圣诞节的时间信息:
// 时:10
// 分:30
// 秒:45
// 日:25
// 月:12
// 年:2023
// 星期:1
?>

示例 4:判断是否为夏令时

<?php
$local_time = localtime(time(), true);

if ($local_time['tm_isdst'] > 0) {
    echo "当前是夏令时";
} elseif ($local_time['tm_isdst'] == 0) {
    echo "当前不是夏令时";
} else {
    echo "夏令时信息未知";
}
?>

示例 5:获取今天是星期几(中文)

<?php
$local_time = localtime();
$weekdays = ["日", "一", "二", "三", "四", "五", "六"];
$weekday_index = $local_time[6]; // tm_wday

echo "今天是星期" . $weekdays[$weekday_index];
// 输出:今天是星期X
?>

示例 6:比较不同时区的时间

<?php
// 设置时区为纽约
date_default_timezone_set('America/New_York');
$ny_time = localtime(time(), true);

// 设置时区为东京
date_default_timezone_set('Asia/Tokyo');
$tokyo_time = localtime(time(), true);

echo "纽约时间:" . $ny_time['tm_hour'] . ":" . $ny_time['tm_min'] . "<br>";
echo "东京时间:" . $tokyo_time['tm_hour'] . ":" . $tokyo_time['tm_min'];
?>

注意事项

  • localtime() 返回的时间基于服务器的时区设置
  • 月份索引从0开始(0=一月,11=十二月),使用时需要加1
  • 年份是从1900年开始的年数,使用时需要加1900
  • getdate() 函数类似,但返回格式不同
  • 夏令时标志在不同地区可能不同,使用时需注意

相关函数

  • date() - 格式化本地时间/日期
  • getdate() - 获取日期/时间信息
  • time() - 返回当前时间的Unix时间戳
  • mktime() - 取得一个日期的Unix时间戳
  • strftime() - 根据区域设置格式化本地时间/日期
  • gmdate() - 格式化GMT/UTC日期/时间