将 <input type="time"> 格式化为 12 小时格式,不带 seconds/milliseconds

formatting <input type="time"> to 12 hour format with no seconds/milliseconds

我试图格式化一些时间来显示。

  <input ng-change="changeTimeBehaviours()" ng-model="booking.time" type="time" >

如何将格式添加到 h:mma 格式? (例如2:30PM)

我用过

var _time = new Date().toLocaleTimeString(navigator.language,{hour:'2-digit', minute: '2-digit'});

它完成了工作,但我不能将它与 type='time' 一起使用,因为它需要日期时间对象而不是字符串。

我正在使用

{{booking.time | date:"h:mma"}}

在另一个部分的模板中,效果很好。

~编辑

我正在使用 ionic serve 来测试应用程序,它给了我这个时间

11:59:18.046 下午

当我关闭退出服务并刷新页面时,chrome 的时间标记正是我想要的,

下午 11:59

所以我得出的结论是它与 ionic 或 cordova 如何构建类型有关="time"

~编辑2

似乎是一个本地化问题,因为它在 ios 上也能正常工作。

您正在使用 angularjs 表达式

{{booking.time | date:"h:mma"}}
这将仅在 UI 端过滤您的数据。所以改变你的控制器中的逻辑类似于
var sdf = new SimpleDateFormat("HH:mm");
var _time = sdf.format(new Date());