PHP时间戳转日期

PHP时间戳转日期

引言

数据库里常存Unix时间戳(秒级整数),展示到页面要转成可读日期;反过来用户选的日期也要转成时间戳入库。date()和strtotime()是这对基础转换工具,理解格式符和时区才能避免差8小时。

时间戳转日期

$ts = 1760000000;
echo date('Y-m-d H:i:s', $ts);

date()第二个参数缺省就是当前时间time(),传指定时间戳则格式化该时刻。

当前时间戳

echo time();            // 秒级时间戳
echo microtime(true);   // 带微秒的浮点时间戳

日期字符串转时间戳

$ts = strtotime('2026-10-19 08:30:00');
echo $ts;

strtotime支持英文相对表达式:

strtotime('tomorrow');
strtotime('+1 week');
strtotime('next Monday');

DateTime面向对象写法

$dt = new DateTime('@' . $ts);
echo $dt->format('Y-m-d H:i:s');

$d = DateTime::createFromFormat('Y-m-d', '2026-10-19');
echo $d->getTimestamp();

复杂时区和格式解析用DateTime更稳。

常用格式符

  • Y四位年,m两位月,d两位日,H24小时,i分,s秒;
  • 带毫秒用v,星期用D/l,12小时制用g/a。

注意事项

  • 服务器时区不对会差8小时,先date_default_timezone_set('Asia/Shanghai');
  • date()对1970前或2038前后32位系统有边界问题;
  • strtotime解析失败返回false,要判空再用;
  • 毫秒时间戳除以1000再传给date();
  • 跨时区存储建议统一UTC,展示时再转本地;
  • MySQL存int(10)秒级,避免用字符串日期做比较。

总结

时间戳转日期用date('Y-m-d H:i:s', $ts),日期转时间戳用strtotime(),复杂解析用DateTime。先设好Asia/Shanghai时区,毫秒先除以1000,strtotime失败要判空。入库统一存秒级时间戳,展示层再格式化,比存字符串日期更好比较和索引。


emer 发布于  2026-10-19 07:37 

PHP 时间日期处理

PHP 时间日期处理

时间日期是开发常用功能,这些函数要记住。

1. 获取当前时间

// 当前时间戳
echo time();

// 当前日期时间
echo date('Y-m-d H:i:s');

// 今天日期
echo date('Y-m-d');

2. 时间戳和日期互转

时间戳转日期

$time = time();
echo date('Y-m-d H:i:s', $time);

日期转时间戳

$date = '2024-01-01 12:00:00';
$time = strtotime($date);
echo $time;

3. 常用日期格式

// 2024-01-01
echo date('Y-m-d');

// 2024-01-01 12:00:00
echo date('Y-m-d H:i:s');

// 2024年01月01日
echo date('Y年m月d日');

// 2024/01/01
echo date('Y/m/d');

// 星期几
echo date('l');  // Sunday

4. 常用格式字符

  • Y: 4位年
  • m: 2位月
  • d: 2位日
  • H: 24小时制
  • i: 分钟
  • s: 秒

5. 日期加减

// 明天
echo date('Y-m-d', strtotime('+1 day'));

// 昨天
echo date('Y-m-d', strtotime('-1 day'));

// 一周后
echo date('Y-m-d', strtotime('+1 week'));

// 一个月后
echo date('Y-m-d', strtotime('+1 month'));

// 一年后
echo date('Y-m-d', strtotime('+1 year'));

6. 计算时间差

$start = strtotime('2024-01-01');
$end = strtotime('2024-01-10');

// 相差天数
$diff = ($end - $start) / 86400;
echo $diff . '天';

7. DateTime 类(推荐)

// 创建日期对象
$date = new DateTime('2024-01-01');

// 格式化输出
echo $date->format('Y-m-d H:i:s');

// 加一天
$date->add(new DateInterval('P1D'));
echo $date->format('Y-m-d');

// 计算两个日期差
$start = new DateTime('2024-01-01');
$end = new DateTime('2024-01-10');
$diff = $start->diff($end);
echo $diff->days . '天';

8. 常用场景

1)几天前

function timeAgo($time) {
    $diff = time() - $time;
    if ($diff < 60) return '刚刚';
    if ($diff < 3600) return floor($diff/60) . '分钟前';
    if ($diff < 86400) return floor($diff/3600) . '小时前';
    return floor($diff/86400) . '天前';
}

2)生日计算

$birthday = '1990-01-01';
$age = floor((time() - strtotime($birthday)) / 31536000);
echo $age . '岁';

总结

PHP 时间日期处理要点:

  • time() 获取时间戳
  • date() 格式化日期
  • strtotime() 日期转时间戳
  • 用 +1 day 等做日期加减
  • 推荐用 DateTime 类
  • 时间差除以86400得天数
  • 注意时区设置

做开发时间日期天天用,这些函数必须熟。


emer 发布于  2026-10-9 07:23 
'); })();