Как отформатировать «2021-01-19T12:50:00Z» до: 2021-01-19 12:50:00

#javascript #angular #typescript

#javascript #угловой #машинопись

Вопрос:

Я использую angular и rxjs.

Итак, у меня есть это:

   x: console.log(res.map(date => date.dt))
 

И он возвращает это:

 0: "2021-01-19T12:50:00Z"
1: "2021-01-19T12:51:00Z"
2: "2021-01-19T12:52:00Z"
3: "2021-01-19T12:53:00Z"
4: "2021-01-19T12:54:00Z"
5: "2021-01-19T12:55:00Z"
6: "2021-01-19T12:56:00Z"
7: "2021-01-19T12:57:00Z"
8: "2021-01-19T12:59:00Z"
 

Но, конечно, это не читается.

ПОЭТОМУ я хочу преобразовать его, например, так: «2021-01-19 12:50:00»,

Итак: гггг-ММ-дд ЧЧ-ММ-СС

Но так что я должен изменить?

Спасибо

Ответ №1:

Возможно, вы могли бы сделать что-то вроде этого:

     // this is taking a date string, if you are passing the date obj directly then no need to pass it to `new Date()`
    function cleanTheDate(dateStr) {
        return new Date(dateStr).toISOString().
            replace(/T/, ' ').
            replace(/.. /, '')
    }
 

Комментарии:

1. ах, оке, значит, все еще регулярное выражение. Оке, спасибо.

2. Я имею в виду, что вы могли бы сделать это без регулярных выражений, но я считаю, что это чище, чем без регулярных выражений. Или вы могли бы использовать некоторые сторонние модули, но это не обязательно для таких простых задач.

Ответ №2:

Я думаю, вам нужно написать свою собственную функцию форматирования даты. Что-то вроде:

 const formatDate = (inputDate) => {
  return `${inputDate.getFullYear()}-${addLeadingZero(inputDate.getMonth()   1)}-${addLeadingZero(inputDate.getDate())} ${addLeadingZero(inputDate.getHours())}:${addLeadingZero(inputDate.getMinutes())}:${addLeadingZero(inputDate.getSeconds())}`;
}

const addLeadingZero = (input) => {
  return input < 10 ? `0${input}` : input;
}

console.log(formatDate(new Date())); 

Ответ №3:

ANGULAR ИМЕЕТ СВОЙ СОБСТВЕННЫЙ КАНАЛ ДАТЫ ДЛЯ HTML И ФУНКЦИЮ formatDate () ДЛЯ TS-ФАЙЛА

Привет, как я упоминал выше, вы можете использовать встроенные каналы Angular

Канал даты: https://angular.io/api/common/DatePipe

Функция formatDate(): https://angular.io/api/common/formatDate

 // If you want to format the date in the HTML template

// Syntax
{{ value_expression | date [ : format [ : timezone [ : locale ] ] ] }}


// Example
<p>
  <strong>
     Birthday in format dd/MM/yyyy :
  </strong>
  {{ birthday | date:'dd/MM/yyyy' }}
</p>
-------------------------------------------------------------

// If you want to format the date in the component.ts file

// Syntax
formatDate(value: string | number | Date, format: string, locale: string, timezone?: string): string

// Example
import { formatDate } from '@angular/common';

const format = 'dd/MM/yyyy';
const myDate = '2021-01-20';
const locale = 'en-US';
const formattedDate = formatDate(myDate, format, locale);