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

VueJS中如何实现无AM/PM的24小时制原生time时间选择器

问题原因

原生HTML的<input type="time">没有提供任何原生属性可以强制指定时间选择器的12/24小时制显示规则,你看到的带AM/PM的12小时制样式,是浏览器根据当前用户的系统区域时间设置、浏览器语言偏好自动渲染的,这也是你查MDN找不到对应配置项的原因——这个行为本来就不属于网页可强制控制的原生属性范畴。

可落地的实现方案

方案1:通过lang属性适配(零依赖,覆盖绝大多数普通用户场景)

你可以给输入框或者其上层父容器添加对应24小时制默认区域的lang属性,引导浏览器优先渲染24小时制样式,修改后的代码如下:

<!-- Start Time -->
<div v-if="this.selectedValue=== '1'" class="container mx-auto flex bg-white px-6 py-1 space-x-2">
    <dashboard-input-label class="col-sm-2 mb-2 w-full" identifier="shift_start_time">
        Start time
    </dashboard-input-label>
    <div class="col-sm-10 mb-6 w-full">   
        <input 
            name="shift_start_time" 
            type="time"
            class="form-input w-full relative z-10"
            placeholder="Start time"
            lang="en-GB"
        >
    </div>   
</div>
<!-- Start Time -->

常用的默认24小时制区域标识包括en-GB(英国英语)、zh-CN(简体中文)、de-DE(德语)等,其中en-GB的兼容性最好,在Chrome、Edge、Safari等主流浏览器上都会默认渲染不带AM/PM的24小时制选择器。

注意:这个方案不是100%强制生效,如果用户手动修改了操作系统的区域时间格式,强制把对应地区的时间显示改成12小时制,选择器还是会跟随系统设置,但这个场景占比极低,普通用户基本不会做这类自定义修改。

方案2:使用第三方时间选择器组件(100%强制24小时制,无系统依赖)

如果你的业务要求所有用户无论系统如何设置,都必须显示统一的24小时制时间选择器,直接放弃原生type="time"输入,换用Vue生态成熟的时间选择组件即可,这类组件的时间格式完全由前端配置决定,不受系统环境影响:

  • 如果你用Element Plus/Vue3,直接用el-time-picker组件,配置format="HH:mm"即可实现24小时制无AM/PM的效果
  • 如果你用Vuetify,直接用v-time-picker组件,设置format="24hr"即可
  • 如果要轻量实现,可以选@vuepic/vue-timepicker这类无UI框架依赖的独立组件,同样支持强制指定24小时格式
避坑提醒

不要尝试通过给输入框设置24小时格式的初始value(比如value="13:00")来修改显示样式,这个操作只会修改输入框的默认选中值,不会改变选择器本身的12/24小时制渲染逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:27:26