javascript - Hur får man exakt tidszon med hjälp av date-fns?


Jag använder följande datumrör för att formatera datum med date-fns-biblioteket

date.pipe.ts

import { Pipe, PipeTransform } from '@angular/core';
import { format } from 'date-fns';

@Pipe({
  name: 'formatDate'
})
export class FormatDatePipe implements PipeTransform {
  transform(value: string | number | Date, dateFormat: string): string {
    return format(value, dateFormat);
  }
}

komponent.html

<h1> {{ startDate | formatDate: 'DD-MM-YYYY HH:mm:ss.SSSZ' }} </h1>

Jag får följande resultat

utgång

01-01-2021 07:09:00.000-05:00 

men jag försöker få den exakta tidszonen istället för bara -05:00, till exempel, i detta fall (UTC-5) Förväntat resultat

01-01-2021 07:09:00.000 (UTC-5)

Svar #1

Du behöver använda OOOO eller zzzz som nämnts på date-fns format-dokumentationssidan. Ändra antalet bokstäver (t.ex. O eller OO eller OOO eller OOOO) enligt dina behov.

Förutom detta har du använt några fel bokstäver t.ex. har du använt

  1. Y istället för y
  2. D istället för d

Demo:

import { format } from 'date-fns';

const now  = new Date();

console.log(format(now, "dd-MM-yyyy HH:mm:ss.SSSOOOO"));

Utdata från ett exempel på en körning i min tidszon, Europa/London:

07-08-2021 13:17:55.549GMT+01:00

ONLINE DEMO

(Obs: Klicka på Console längst ner till höger på ONLINE DEMO-sidan.)