Search code examples
angularangular5angular-pipe

How to change time from 24 to 12 hour format in angular 5


I have used input type time in my application to receive 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>

And after i store data through input it gets stored in 24 hour format :

View Of database how the time is stored

So now when I display it in my view it gets displayed in the same format eg: 23:11:00 , is it possible to use something like pipes to convert it into 12 hr format while displaying in the view.


Solution

  • Yes, you can do it from pipe:

    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';
             if(parseInt(hour) == 0)
              hour = 12;
             min = (min+'').length == 1 ? `0${min}` : min;
             hour = hour > 12 ? hour - 12 : hour;
             hour = (hour+'').length == 1 ? `0${hour}` : hour;
             return `${hour}:${min} ${part}`
           }
       }
    

    In your html for example:

    <p>Time Format From  24 to 12 : {{'23:11:00' | convertFrom24To12Format}}</p>
    

    Hope this will help you!!