使用ISO-8601格式的date-fns获取当前日期

时间:2018-09-14 14:55:26

标签: javascript typescript date-fns

我想使用date-fns lib:从当前日期获取过去一小时:分钟:秒的ISO-8601格式:

我正在使用: endOfDay(new Date());

Fri Sep 14 2018 23:59:59 GMT-0300

因此添加toISOString()以ISO格式获取它: endOfDay(new Date()).toISOString()

结果: 2018-09-15T02:59:59.999Z

当我需要时:

2018-09-14T23:59:59.999Z

1 个答案:

答案 0 :(得分:5)

2018-09-14T23:59:59.999Z不是endOfDay(new Date());计算的一天结束时间。现在早了3个小时。 “ Z”表示UTC,您所在的时区与UTC -0300的偏移量。

通过执行endOfDay,您将获得一个日期值,可以将其与其他日期值进行比较和其他计算。这是一个完整的日期,带有本地时区的时间。

您要在格式化的字符串中保留相同的日期吗?您可以在本地时区中将日期格式设置为ISO 8601字符串:

format(endOfDay(new Date()), 'YYYY-MM-DD[T]HH:mm:ssZZ')
// Prints "2018-09-14T23:59:59.999-0300" in Brazil (BRT)

您要在一天结束时使用与UTC相同的数字吗?如果您忽略了相对于其他日期的实际一天结束时间,则可以将“一天的最后一天”与“ Z”连接起来:

format(new Date(), 'YYYY-MM-DD') + 'T23:59:59.999Z'
// Prints "2018-09-14T23:59:59.999Z" anywhere on Earth