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

Get the current date using date-fns in ISO-8601 format

我想使用 date-fns lib 获取当天最后 hour:minute:secounds 的 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

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

注意: 如果您使用 date-fns 1.x,请将上述模式中的 yyyy 替换为 YYYY。另请参阅下面的评论。

format(endOfDay(new Date()), "yyyy-MM-dd'T'HH:mm:ss'Z'")

这个方法对我有用