时间函数

这些函数可以使用有效的 DateTimeFormatter 模式来格式化时间值。

格式化时间类型

您可以传入任何时间类型(Date、Time、DateTime、LocalTime、LocalDateTime、Duration)以及模式。请注意,如果您传入的值与模式不匹配(例如,对 Date 值使用小时的 HH 模式,或对 Time 值使用日的 DD 模式),将会抛出异常。

格式化为日期
RETURN apoc.temporal.format( date(), 'YYYY-MM-dd') AS output;
表 1. 结果
输出

"2019-06-24"

格式化为日期和时间
RETURN apoc.temporal.format( datetime(), 'YYYY-MM-dd HH:mm:ss.SSSSZ') AS output;
表 2. 结果
输出

"2019-06-24 13:56:56.8550+0000"

格式化为时间
RETURN apoc.temporal.format( localtime(), 'HH:mm:ss.SSSS') AS output;
表 3. 结果
输出

"13:57:31.9250"

您也可以传入 ISO 日期时间模式,完整列表可在此处查看 ISO_DATE

例如

格式化为日期
RETURN apoc.temporal.format( date( { year: 2018, month: 12, day: 10 } ), 'date' ) as output;
表 4. 结果
输出

"2018-12-10"

格式化为日期和时间
RETURN apoc.temporal.format( localdatetime( { year: 2018, month: 12, day: 10, hour: 12, minute: 34, second: 56, nanosecond: 123456789 } ), 'ISO_LOCAL_DATE_TIME' ) as output;
表 5. 结果
输出

"2018-12-10T12:34:56.123456789"

格式化为日期
RETURN apoc.temporal.format( date( { year: 2018, month: 12, day: 10 } ), 'ISO_DATE' ) as output;
表 6. 结果
输出

"2018-12-10"

格式化持续时间

尝试格式化持续时间时,该过程会尝试创建一个日期 (01/01/0000) 并添加持续时间。这使您可以提供上述一致的格式。

格式化为持续时间
RETURN apoc.temporal.format( duration.between( datetime.transaction(), datetime.realtime() ) , 'HH:mm:ss.SSSS') AS output;
表 7. 结果
输出

"00:00:00.0110"

转换为带时区的日期时间

您可以传入一个要转换的字符串作为第一个参数,一个将字符串转换为 ZonedDateTime 的模式作为第二个参数(默认值:'yyyy-MM-dd HH:mm:ss'),以及时区作为第三个参数(默认值:'UTC')。

例如,使用默认模式和时区

RETURN apoc.temporal.toZonedTemporal('2015-12-23 23:59:59') AS output;
表 8. 结果
输出

"2015-12-23T23:59:59[UTC]"

RETURN apoc.temporal.toZonedTemporal('2012-12-23T23:59:59', "yyyy-MM-dd'T'HH:mm:ss", "Asia/Tokyo") AS output;
表 9. 结果
输出

"2012-12-23T23:59:59[Asia/Tokyo]"