时间函数

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

此功能已弃用。请改用 Cypher 的 format() 函数。

格式化时间类型

您可以传入任何时间类型(Date、Time、DateTime、LocalTime、LocalDateTime、Duration)以及一个模式。请注意,如果模式对于您传入的值无效(例如,对于 Date 值使用 HH 表示小时,或对于 Time 值使用 DD 表示天),则会抛出异常。

apoc.temporal.format
RETURN apoc.temporal.format( date(), 'yyyy-MM-dd') AS output;
Cypher 的 format 函数
RETURN format( date(), 'yyyy-MM-dd') AS output;
表 1. 结果
输出

"2019-06-24"

apoc.temporal.format
RETURN apoc.temporal.format( datetime(), 'yyyy-MM-dd HH:mm:ss.SSSSZ') AS output;
Cypher 的 format 函数
RETURN format( datetime(), 'yyyy-MM-dd HH:mm:ss.SSSSZ') AS output;
表 2. 结果
输出

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

apoc.temporal.format
RETURN apoc.temporal.format( localtime(), 'HH:mm:ss.SSSS') AS output;
Cypher 的 format 函数
RETURN format( localtime(), 'HH:mm:ss.SSSS') AS output;
表 3. 结果
输出

"13:57:31.9250"

您也可以传入 ISO 日期时间模式,列表可在此处获取 ISO_DATE

例如:

apoc.temporal.format
RETURN apoc.temporal.format( date( { year: 2018, month: 12, day: 10 } ), 'date' ) as output;
Cypher 的 format 函数
RETURN format( date( { year: 2018, month: 12, day: 10 } ) ) as output;
表 4. 结果
输出

"2018-12-10"

apoc.temporal.format
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;
Cypher 的 format 函数
RETURN format( localdatetime( { year: 2018, month: 12, day: 10, hour: 12, minute: 34, second: 56, nanosecond: 123456789 } ) ) as output;
表 5. 结果
输出

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

apoc.temporal.format
RETURN apoc.temporal.format( date( { year: 2018, month: 12, day: 10 } ), 'ISO_DATE' ) as output;
Cypher 的 format 函数
RETURN format( date( { year: 2018, month: 12, day: 10 } ) ) as output;
表 6. 结果
输出

"2018-12-10"

格式化时间间隔 (Durations)

当尝试格式化时间间隔时,该过程会尝试创建一个日期(01/01/0000)并加上该时间间隔。这允许您按照上述方法提供一致的格式。

apoc.temporal.formatDuration
RETURN apoc.temporal.format( duration.between( datetime.transaction(), datetime.realtime() ) , 'HH:mm:ss.SSSS') AS output;
Cypher 的 format 函数
RETURN 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')以将字符串转换为 ZonedDateTime,并传入时区作为第三个参数(默认值:'UTC')。

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

apoc.temporal.toZonedTemporal
RETURN apoc.temporal.toZonedTemporal('2015-12-23 23:59:59') AS output;
Cypher 的模式构造函数
RETURN datetime('2015-12-23 23:59:59', 'yyyy-MM-dd HH:mm:ss') AS output;
表 8. 结果
输出

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

apoc.temporal.toZonedTemporal
RETURN apoc.temporal.toZonedTemporal('2012-12-23T23:59:59', "yyyy-MM-dd'T'HH:mm:ss", "Asia/Tokyo") AS output;
Cypher 的模式构造函数
RETURN datetime({datetime: localdatetime('2012-12-23T23:59:59'), timezone: "Asia/Tokyo"}) AS output;
表 9. 结果
输出

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