0Pricing
PHP Academy · 课时

Unix 时间戳与 date()

获取当前时间的 Unix 时间戳,并使用 date() 对其进行格式化。

Unix 时间戳与 date() 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 PHP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 PHP Academy 课程共包含 4 节课。

PHP 中的时间

PHP 将时间表示为 Unix 时间戳 — 即自 1970 年 1 月 1 日 00:00:00 UTC(Unix 纪元)以来经过的秒数。主要函数:

  • time() — 当前 Unix 时间戳
  • date($format, $timestamp) — 格式化时间戳
  • mktime() — 根据日期各部分创建时间戳

time()

获取当前 Unix 时间戳:

<?php
$now = time();
echo $now;           // e.g. 1716800000
echo gettype($now);  // integer

// 1 day in seconds
$tomorrow = time() + 86400;
$yesterday = time() - 86400;

echo date('Y-m-d', $tomorrow);  // tomorrow's date

date() 格式字符

date() 的常用格式字符:

  • Y — 4 位年份:2024
  • m — 带前导零的月份:01–12
  • d — 带前导零的日期:01–31
  • H — 带前导零的 24 小时制小时
  • i — 带前导零的分钟
  • s — 秒
  • D — 星期名称缩写:Mon
  • N — ISO 星期值:1=星期一,7=星期日

格式化日期

使用 date() 格式化时间戳:

<?php
$ts = time();

echo date('Y-m-d', $ts);           // 2024-05-27
echo date('d/m/Y', $ts);           // 27/05/2024
echo date('D, d M Y H:i:s', $ts);  // Mon, 27 May 2024 14:30:00
echo date('c', $ts);               // ISO 8601: 2024-05-27T14:30:00+00:00
echo date('U', $ts);               // Unix timestamp (same as time())

mktime()

根据指定的日期和时间组成部分创建时间戳:

<?php
// mktime(hour, min, sec, month, day, year)
$ts = mktime(0, 0, 0, 12, 25, 2024);  // Christmas 2024 midnight
echo date('Y-m-d', $ts);  // 2024-12-25

// Last day of month trick:
$lastDay = mktime(0, 0, 0, 3, 0, 2024);  // day 0 = last day of Feb
echo date('Y-m-d', $lastDay);  // 2024-02-29 (leap year)

strtotime()

strtotime() 将人类可读的日期字符串转换为时间戳:

<?php
echo strtotime('2024-12-25');       // timestamp
echo strtotime('next Monday');      // next Monday's timestamp
echo strtotime('+1 week');          // 7 days from now
echo strtotime('last day of this month');  // end of month
echo strtotime('2024-01-01 +3 months');   // April 1, 2024

使用 strtotime 进行日期运算

使用 strtotime 的相对表达式计算相对日期:

<?php
$subscriptionStart = strtotime('2024-01-15');
$oneYearLater = strtotime('+1 year', $subscriptionStart);
$trialEnd = strtotime('+14 days');

echo date('Y-m-d', $oneYearLater);  // 2025-01-15
echo date('Y-m-d', $trialEnd);      // 14 days from today

// Days until event:
$event = strtotime('2024-12-31');
$daysLeft = (int) (($event - time()) / 86400);
echo "Days until NYE: $daysLeft";

时间戳与数据库

将日期以 ISO 字符串或 Unix 时间戳的形式存储在数据库中:

<?php
// Store as ISO string (recommended for readability):
$created_at = date('Y-m-d H:i:s');  // '2024-05-27 14:30:00'

// Store as Unix timestamp (fast integer comparison):
$created_ts = time();  // 1716800000

// Convert back:
$ts = strtotime($created_at);
$fmt = date('Y-m-d H:i:s', $created_ts);

date_create 与 date_format

date() 和 strtotime() 的面向对象替代方案:

<?php
$dt = date_create('2024-05-27');
echo date_format($dt, 'D, d M Y');  // Mon, 27 May 2024

date_modify($dt, '+30 days');
echo date_format($dt, 'Y-m-d');  // 2024-06-26

// Equivalent OO:
$dt2 = new DateTime('2024-05-27');
$dt2->modify('+30 days');
echo $dt2->format('Y-m-d');

checkdate()

使用 checkdate() 验证日期是否真实有效:

<?php
var_dump(checkdate(2, 29, 2024));  // true (leap year)
var_dump(checkdate(2, 29, 2023));  // false (not leap year)
var_dump(checkdate(13, 1, 2024));  // false (no month 13)
var_dump(checkdate(1, 31, 2024));  // true

用于基准测试的 Microtime

使用 microtime(true) 以亚秒级精度测量执行时间:

<?php
$start = microtime(true);

// Simulate work
for ($i = 0; $i < 100000; $i++) {}

$end = microtime(true);
$duration = ($end - $start) * 1000;  // milliseconds
echo sprintf('Took %.2f ms', $duration);

快速检查

PHP 的 time() 函数返回什么?

回顾:Unix 时间戳与 date()

要点:

  • time() — 当前 Unix 时间戳
  • date($format, $ts) — 格式化任意时间戳
  • mktime() — 根据日期各部分构建时间戳
  • strtotime() — 解析人类可读的日期
  • 使用 ISO 8601 格式存储数据库数据
  • 使用 microtime(true) 进行高精度计时

常见问题解答

「Unix 时间戳与 date()」课时是免费的吗?

是的 — 「Unix 时间戳与 date()」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 PHP Academy 课程的其余内容,请升级到 CoddyKit PRO。 PHP Academy 课程共包含 4 节课。

「Unix 时间戳与 date()」这节课中我会学到什么?

获取当前时间的 Unix 时间戳,并使用 date() 对其进行格式化。 你通过在浏览器中直接运行的动手代码来练习 PHP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 PHP Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 PHP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「Unix 时间戳与 date()」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 PHP Academy 课中编写并运行代码吗?

能。每节 PHP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Unix 时间戳与 date()
  2. DateTime 类
  3. 使用 DateInterval 进行日期运算
  4. PHP 中的时区
← 返回 PHP Academy