Javascript 显示带有日期fns的UTC字符串
我有一个表示ISO UTC日期的字符串:Javascript 显示带有日期fns的UTC字符串,javascript,date-fns,Javascript,Date Fns,我有一个表示ISO UTC日期的字符串:2020-06-08T04:00:00.000Z(UTC 7月8日上午4点) 我用它创建了一个对象,这样我就可以根据需要格式化显示的字符串。因此,我的工作如下: const localDate = parseISO('2020-06-08T04:00:00.000Z'); const formattedDateString = format(localDate, 'MMMM dd, yyyy, EEEE, hh:mm aaa'); 但是,formatte
2020-06-08T04:00:00.000Z
(UTC 7月8日上午4点)
我用它创建了一个对象,这样我就可以根据需要格式化显示的字符串。因此,我的工作如下:
const localDate = parseISO('2020-06-08T04:00:00.000Z');
const formattedDateString = format(localDate, 'MMMM dd, yyyy, EEEE, hh:mm aaa');
但是,formattedDateString
在本地时间显示(假设您的浏览器位于UTC前1小时的时区,它显示…05 AM
),但我需要显示UTC时间(无论浏览器的时区如何),即。。。凌晨4点
。我该怎么做
注意:
…
表示省略以保持示例清晰我最后添加了日期fns tz
库并执行以下操作:
import { parseISO, format } from 'date-fns';
import { utcToZonedTime } from 'date-fns-tz';
const localDate = parseISO('2020-06-08T04:00:00.000Z');
const convertedDate = isLocalTime ? localDate : utcToZonedTime(localDate, 'UTC');
const formattedDateString = isLocalTime
? format(convertedDate, 'MMMM dd, yyyy, EEEE, hh:mm aaa EEEE') // June 08, 2020, Monday, 06:00 AM, GMT+02:00
: `${format(convertedDate, 'MMMM dd, yyyy, EEEE, hh:mm aaa')} UTC`; // June 08, 2020, Monday, 04:00 AM, UTC
免责声明:我没有发现
utcToZonedTime
的UTC
参数的使用被记录在案(这可能不是推荐的方法,或者只是我没有在图书馆文档中找到它)。您可以在这里@PeteKelley找到一些变体,谢谢,但是我需要它用于Javascript库date fns
特别是date fns
文档中有一个与时区相关的文档,它应该涵盖您要查找的内容:似乎本地时间是默认时间,为了切换到UTC,您需要它。这是我的想法之一,但是date fns tz
库需要第二个参数时区,因此如果您将Europe/London
之类的内容传递给工作(当英国在夏季/冬季时间切换期间偏离UTC时),那么我们再次面临使用这种方法的一年中的一段时间将休息1小时。除非有“UTC”参数,但我找不到任何引用此类参数的文档