如何在角度5中将时间从24小时格式更改为12小时格式

Atu*_*tha 4 angular-pipe angular angular5

time在应用程序中使用输入类型来接收时间:

  <mat-input-container>
<input matInput  formControlName="start_time" type="time" placeholder="Time Start">
<p class="invalid-text" *ngIf="dvrForm.controls.start_time.invalid &&
        (dvrForm.controls.start_time.dirty || dvrForm.controls.start_time.touched)">
  <span *ngIf="dvrForm.controls.start_time.errors.required"> Start Time is required.</span></p>
Run Code Online (Sandbox Code Playgroud)

在我通过输入存储数据后,它以24小时格式存储:

查看数据库的时间如何存储

因此,现在当我在视图中显示它时,它会以相同的格式显示,例如:23:11:00,是否可以在视图中显示时 使用类似管道的东西将其转换为12小时格式。

v8-*_*8-E 7

使用管道,您可以实现它,您需要使用 hh 12 小时和 HH 24 小时

var value = element(by.binding('example.value | date: "HH:mm:ss"'));
    var valid = element(by.binding('myForm.input.$valid'));

    function setInput(val) {
      var scr = "var ipt = document.getElementById('exampleInput'); " +
      "ipt.value = '" + val + "';" +
      "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
      browser.executeScript(scr);
    }
Run Code Online (Sandbox Code Playgroud)
<script src="//code.angularjs.org/1.7.0/angular.min.js"></script>
    <body ng-app="timeExample">
      <script>
     angular.module('timeExample', [])
       .controller('DateController', ['$scope', function($scope) {
         $scope.example = {
           value: new Date()
         };
       }]);
    </script>
    <form name="myForm" ng-controller="DateController as dateCtrl">
       <label for="exampleInput">Pick a time and Change AM to PM</label>
       <input type="time" id="exampleInput" name="input" ng-model="example.value"
           placeholder="HH:mm:ss"  required /><br/>
       <tt>value in 12H = {{example.value | date: "hh:mm:ss"}}</tt><br/>
       
       <tt>value 24H = {{example.value | date: "HH:mm:ss"}}</tt>

    </form>
    </body>
Run Code Online (Sandbox Code Playgroud)


San*_*j_V 7

是的,您可以通过管道进行操作:

import { Pipe, PipeTransform } from '@angular/core';
@Pipe({name: 'convertFrom24To12Format'})
export class TimeFormat implements PipeTransform {
     transform(time: any): any {
         let hour = (time.split(':'))[0]
         let min = (time.split(':'))[1]
         let part = hour > 12 ? 'pm' : 'am';
         min = (min+'').length == 1 ? `0${min}` : min;
         hour = hour > 12 ? hour - 12 : hour;
         hour = (hour+'').length == 1 ? `0${hour}` : hour;
         return `${hour}:${min} ${part}`
       }
   }
Run Code Online (Sandbox Code Playgroud)

以您的html为例:

<p>Time Format From  24 to 12 : {{'23:11:00' | convertFrom24To12Format}}</p>
Run Code Online (Sandbox Code Playgroud)

希望能帮到你!!


Nad*_*lta 7

为了将来参考,使用默认的 Angular 管道引用大写 HH.mm而不是hh.mm

today: Date = new Date('2020-12-12T18:00');

<div> {{ today | date : 'hh.mm' }}</div>
// 06.00
<div>{{ today | date : 'HH.mm' }}</div>
// 18.00
Run Code Online (Sandbox Code Playgroud)