конвертировать 24 часа в 12 часов - PullRequest
0 голосов
/ 02 января 2019

у меня есть ионный код, который загружает время для меня, но он делает это за 24 часа, и я хочу его за 12 часов с AM или PM

я пробовал много вещей, но не работает

этомой код

loadTimes() {
    this.availabilityTimes = new Array<Array<string>>();
    for(let i = 0; i < 7; i++){
        this.availabilityTimes.push(new Array<string>());
    }
    let date = new Date();
    for (let avail of this.availabilities) {
        let dateStart = new Date(date.getFullYear(), date.getMonth(), date.getDate(), Number(avail.start.split(':')[0]), Number(avail.start.split(':')[1]), 0);
        let dateEnd = new Date(date.getFullYear(), date.getMonth(), date.getDate(), Number(avail.end.split(':')[0]), Number(avail.end.split(':')[1]), 0);

        let availabilityTime = new Array<string>();
        let time: number = dateStart.getTime();
        while(time <= dateEnd.getTime()) {
            let dateIn = new Date(time);
            availabilityTime.push((dateIn.getHours()<10?('0'+dateIn.getHours()):String(dateIn.getHours())) +':'+ (dateIn.getMinutes()<10?('0'+dateIn.getMinutes()):String(dateIn.getMinutes())) +':00');
            time = time + 3600000;
        }

Ответы [ 3 ]

0 голосов
/ 02 января 2019

Вы должны использовать трубу для повторного использования.Создайте новый текстовый канал с кодом ниже

import { Pipe, PipeTransform } from '@angular/core';
import * as moment from 'moment';

@Pipe({
   name: 'dateTime'
})

export class DateTimePipe implements PipeTransform {
   transform(value: any, format: string = ''): string {
       // Try and parse the passed value.
       const momentDate = moment(value);

       // If moment didn't understand the value, return it unformatted.
       if (!momentDate.isValid()) return value;

       // Otherwise, return the date formatted as requested.
       return momentDate.format(format);
   }
}

и в HTML используйте этот канал

<td>{{YourDateField.Date |dateTime :'MM/DD/YYYY hh:mm:ss A'}}</td>
0 голосов
/ 08 января 2019

спасибо всем, и я получил ответ, и вот что я сделал для всех, кому это нужно

сначала установите момент

я создаю трубу по: ионной трубе MyPipe

затем я добавляю этот код в файл MyPipe

import { Pipe, PipeTransform } from '@angular/core';
import * as moment from 'moment';

/**
 * Generated class for the MyPipe pipe.
 *
 * See https://angular.io/docs/ts/latest/guide/pipes.html for more info on
 * Angular Pipes.
 */
@Pipe({
  name: 'my',
})
export class MyPipe implements PipeTransform {
  transform(time: any): any {
    let hour = (time.split(':'))[0]
    let min = (time.split(':'))[1]
    let part = 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}`
  }
}

после этого в файле app.mdoule.ts вы должны добавить MyPipe под объявлениями и провайдерами

и последнее, что есть в вашем коде, добавьте это в файл .ts в конструкторе

private MyPipe:MyPipe

и в файле .html

будет так

{{time |my: "hh:mm:ss"}}

MyPipe и my => вы должны изменить его на имя, которое вы хотите при создании канала

0 голосов
/ 02 января 2019

Получить дату в формате строки, разбить на части.

hours = hours % 12 + (hours < 13 ? ' AM' : ' PM');

объединить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...