Angular DatePipe - конвертировать секунды в время с нулевым часовым поясом - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу преобразовать число (представляющее секунды), используя DatePipe, чтобы получить такой результат:

00: 00: 05

Я пытался сделать этос DatePipe следующим образом:

<label>No timezone (default) {{ 5 * 1000 | date:'h:mm:ss'}}</label>

Но он дает результат с включенным часовым поясом +4 (а это не то, что я хочу):

4: 00: 05

Поэтому, чтобы избежать этого, я пытаюсь установить смещение часового пояса на 0:

<label>{{ 5 * 1000 | date:'h:mm:ss z':'+0000'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'UTC'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'GMT'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'GMT+0'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'UTC+0'}}</label>

Но на этот раз время смещается на 12 часов вместо 0:

12: 00: 05 GMT + 0

Так есть ли способ конвертировать секунды в время с DatePipe без смещения часового пояса?
Или есть какие-либо другие трубы по угловым, которые могутиспользоваться для этой цели?

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Это очень легко с MomentJS

const SECONDS_COUNT = 61;

const duration = moment.duration(SECONDS_COUNT, 'seconds');
const resultstring = moment.utc(duration.asMilliseconds()).format('HH:mm:ss');
console.log(resultstring);

должно выводить 00: 01: 01

, убедитесь, что вы используете moment.utc() для вывода, а не moment() чтобы избежать установки региональных настроек.

0 голосов
/ 14 сентября 2018

Так что эта довольно сложная проблема имеет довольно простое решение.
Мы просто должны использовать «H» вместо «h» (диапазон от 0 до 23).
Пример:

<label>{{ 5 * 1000 | date:'H:mm:ss':'UTC'}}</label>

Причиной получения '12' стало использование 'h' в формате времени, который ограничивает значениями от 1 до 12 и конвертирует 00:00 в 12:00 (AM).

enter image description here

0 голосов
/ 14 сентября 2018

Если ваша проблема только в конвертации, попробуйте это:

var date = new Date(null);
date.setSeconds(SECONDS); // specify value for SECONDS here
var result = date.toISOString().substr(11, 8);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...