You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让PHP的getdate()获取带前导零的日期时间?

如何给getdate()获取的日期时间字段添加前导零?

你当前使用的代码通过getdate()获取时间字段,但生成的结果里,日、时、分、秒这类小于10的数值没有前导零,比如输出Update: 8/22/2023 - 4:41:1。这里提供几种修改方案:

方案一:用sprintf统一格式化

sprintf()可以直接指定数字的显示格式,用%02d就能让数字自动补前导零到两位:

$mydate = getdate();
$time = sprintf(
    'Update: %02d/%02d/%d - %02d:%02d:%02d',
    $mydate['mday'],
    $mydate['mon'],
    $mydate['year'],
    $mydate['hours'],
    $mydate['minutes'],
    $mydate['seconds']
);
  • %02d:表示将数字格式化为两位,不足两位时左侧补零
  • %d:直接输出整数(年份是四位,不需要补零)

方案二:用str_pad逐个补零

如果需要单独处理每个字段,可以用str_pad()函数给单个值左补零:

$mydate = getdate();
// 给每个需要补零的字段单独处理
$day = str_pad($mydate['mday'], 2, '0', STR_PAD_LEFT);
$mon = str_pad($mydate['mon'], 2, '0', STR_PAD_LEFT);
$hours = str_pad($mydate['hours'], 2, '0', STR_PAD_LEFT);
$minutes = str_pad($mydate['minutes'], 2, '0', STR_PAD_LEFT);
$seconds = str_pad($mydate['seconds'], 2, '0', STR_PAD_LEFT);

$time = "Update: {$day}/{$mon}/{$mydate['year']} - {$hours}:{$minutes}:{$seconds}";
  • str_pad(目标值, 目标长度, 填充字符, 填充方向):这里指定左填充0到两位长度

方案三:直接用date()函数更简洁

其实PHP的date()函数可以直接生成符合要求的格式化时间,不需要借助getdate(),代码更简短:

$time = 'Update: ' . date('d/m/Y - H:i:s');
  • 格式符说明:
    • d:两位数字的日(01-31)
    • m:两位数字的月(01-12)
    • Y:四位数字的年
    • H:24小时制的两位小时(00-23)
    • i:两位数字的分钟(00-59)
    • s:两位数字的秒(00-59)

内容的提问来源于stack exchange,提问作者user21120625

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:52:09