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

WordPress短代码实现:将4位24小时制数字转为12小时制时间

解决方案:将4位24小时制数字转换为带AM/PM的12小时制时间

你可以通过PHP的DateTime类来实现可靠的时间格式转换,替换原有短代码函数即可完成需求。修改后的代码会自动验证输入格式,并精准转换为目标12小时制样式:

function hel_format_time($atts, $content = null) {
    // 处理嵌套短代码并去除多余空格
    $content = do_shortcode(trim($content));
    
    // 验证输入是否为4位数字的24小时制格式
    if (!preg_match('/^\d{4}$/', $content)) {
        return $content; // 输入无效时返回原内容,避免报错
    }
    
    // 按24小时制解析4位数字为DateTime对象
    $timeObj = DateTime::createFromFormat('Hi', $content);
    
    // 格式化为无前导零的12小时制,带am/pm标识
    return $timeObj->format('g:i a');
}
add_shortcode('format-time', 'hel_format_time');

关键逻辑说明:

  • trim($content):清理输入内容的前后空格,避免格式干扰
  • 正则验证/^\d{4}$/:确保输入是标准的4位数字时间(如0900、1830)
  • DateTime::createFromFormat('Hi', $content):H对应24小时制小时(00-23),i对应分钟,完美匹配4位数字的结构
  • format('g:i a'):g输出无前导零的12小时制小时(1-12),i输出分钟,a输出小写的am/pm(若需大写可改用A)

测试示例:

  • 输入[format-time]0900[/format-time] → 输出9:00 am
  • 输入[format-time]1425[/format-time] → 输出2:25 pm
  • 输入[format-time]0000[/format-time] → 输出12:00 am
  • 输入[format-time]2359[/format-time] → 输出11:59 pm

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:30:53