日期和时间转换
日期和时间以多种格式和配置出现,通常需要针对数据存储系统、报表、网页等进行转换。APOC 日期函数允许用户获取这些 Long 或 String 类型的值,并根据不同的格式需求进行操作。
|
如果您需要将日期对象类型转换为其他格式,请参阅 时间函数 (Temporal Functions)。 |
关于日期和时间格式的说明
-
默认格式为
yyyy-MM-dd HH:mm:ss -
如果格式模式中未指定时区,格式化程序将默认日期属于 UTC 时区
-
如果指定了时区模式,则会从日期字符串中提取时区,否则将报错
-
to/fromSeconds时间戳值基于 POSIX(Unix 时间)系统,即时间戳表示自 1970 年 1 月 1 日星期四 00:00:00 UTC 以来经过的秒数 -
完整支持的格式列表请参见 SimpleDateFormat JavaDoc
过程概览
下表描述了可用的过程:
| 限定名称 | 类型 |
|---|---|
apoc.date.add |
|
apoc.date.convert |
|
apoc.date.convertFormat |
|
apoc.date.currentTimestamp |
|
apoc.date.field |
|
apoc.date.fields |
|
apoc.date.format |
|
apoc.date.fromISO8601 |
|
apoc.date.parse |
|
apoc.date.systemTimezone |
|
apoc.date.toISO8601 |
|
apoc.date.toYears |
|
apoc.date.add
此函数可以对纪元(epoch)格式的日期添加或减去时间单位值。
| 签名 |
|---|
|
它接受以下参数
| 名称 (name) | type | description(描述) | 潜在值 |
|---|---|---|---|
time |
INTEGER(整数) |
要操作的日期值(纪元整数格式) |
|
unit |
STRING |
输入值的精度 |
|
addValue |
INTEGER(整数) |
要添加或减去的时间数值 |
|
addUnit |
STRING |
要添加或减去的单位类型 |
|
apoc.date.convert
此函数将一种时间单位的日期值转换为另一种时间单位的日期值。
| 签名 |
|---|
|
它接受以下参数
| 名称 (name) | type | description(描述) | 潜在值 |
|---|---|---|---|
time |
INTEGER(整数) |
要操作的日期值(纪元整数格式) |
|
unit |
STRING |
输入值的精度 |
|
toUnit |
STRING |
输出值的单位类型 |
|
apoc.date.convertFormat
此函数将一种格式的日期字符串转换为另一种格式的日期字符串。
| 签名 |
|---|
|
它接受以下参数
| 名称 (name) | type | description(描述) | 潜在值 |
|---|---|---|---|
temporal |
STRING |
需要转换的日期字符串 |
|
currentFormat |
STRING |
输入日期字符串的格式 |
有关完整列表,请参见 Java 文档中的 Patterns for Formatting and Parsing(格式化和解析模式)部分 |
convertTo |
STRING |
输出时间类型的格式 |
apoc.date.currentTimestamp
此函数返回调用时系统的当前时间戳。它提供 System.currentTimeMillis(),在事务执行期间保持当前时间,这与 Cypher 的 timestamp() 函数不同,后者在事务内不会更新。
| 签名 |
|---|
|
它不接受任何参数。
apoc.date.field
此函数从纪元格式的日期中提取一个字段的值。
| 签名 |
|---|
|
|
Neo4j 3.4 引入了时间数据类型,这是在 Neo4j 中表示日期的推荐方式。时间类型的字段可以使用 Cypher 的 但是,如果您仍然需要转换时间戳格式,此过程提供了该功能。 |
它接受以下参数
| 名称 (name) | type | description(描述) | 潜在值 |
|---|---|---|---|
time |
INTEGER(整数) |
要操作的日期值(纪元整数格式) |
|
unit |
STRING |
输入值的精度 |
|
timezone |
STRING |
结果日期字符串的时区 |
可以使用 GMT 或数据库(文本)名称指定,具体列表参考 时区列表 |
apoc.date.fields
此函数从纪元格式的日期中提取所有字段的值,并以列和映射的形式返回。
| 签名 |
|---|
|
|
在 3.4 版本中,Neo4j 引入了时间数据类型,这是在 Neo4j 中表示日期的推荐方式。时间类型的字段可以使用 Cypher 的 但是,如果您仍然需要转换时间戳格式,此过程提供了该功能。 |
它接受以下参数
| 名称 (name) | type | description(描述) | 潜在值 |
|---|---|---|---|
date |
STRING |
需要格式化的日期字符串 |
ISO8601 标准格式的日期字符串 |
pattern |
STRING |
输入日期字符串的格式 |
有关完整列表,请参见 Java 文档中的 Patterns for Formatting and Parsing(格式化和解析模式)部分 |
apoc.date.format
此函数将纪元格式的日期转换为指定格式的日期字符串。
| 签名 |
|---|
|
它接受以下参数
| 名称 (name) | type | description(描述) | 潜在值 |
|---|---|---|---|
time |
INTEGER(整数) |
要操作的日期值(纪元整数格式) |
|
unit |
STRING |
输入值的精度 |
|
format |
STRING |
输出日期字符串的格式 |
|
timezone |
STRING |
结果日期字符串的时区 |
可以使用 GMT 或数据库(文本)名称指定,具体列表参考 时区列表 |
apoc.date.fromISO8601
此函数将 ISO8601 标准格式的日期字符串转换为纪元格式的日期。
| 签名 |
|---|
|
它接受以下参数
| 名称 (name) | type | description(描述) | 潜在值 |
|---|---|---|---|
time |
STRING |
需要格式化的日期字符串 |
ISO8601 标准格式的日期字符串 |
|
日期字符串时区仅期望 GMT+00:00 格式的 |
apoc.date.parse
此函数解析指定格式的日期字符串,并将其转换为指定时间单位的纪元格式日期。
| 签名 |
|---|
|
它接受以下参数
| 名称 (name) | type | description(描述) | 潜在值 |
|---|---|---|---|
time |
STRING |
需要格式化的日期字符串 |
ISO8601 标准格式的日期字符串 |
unit |
STRING |
输出日期值所需的精度 |
|
format |
STRING |
待转换的日期字符串格式 |
有关完整列表,请参见 Java 文档中的 Patterns for Formatting and Parsing(格式化和解析模式)部分 |
timezone |
STRING |
结果日期字符串的时区 |
可以使用 GMT 或数据库(文本)名称指定,具体列表参考 时区列表 |
apoc.date.toISO8601
此函数将纪元格式的日期转换为 ISO8601 标准格式的日期字符串。
| 签名 |
|---|
|
它接受以下参数
| 名称 (name) | type | description(描述) | 潜在值 |
|---|---|---|---|
time |
INTEGER(整数) |
要操作的日期值(纪元整数格式) |
|
unit |
STRING |
输入值的精度 |
|
apoc.date.toYears
此函数可以进行几种不同的转换。
-
将纪元毫秒格式的日期转换为自 Unix 纪元时间
1970 年 1 月 1 日以来经过的年数。 -
将指定格式的日期字符串转换为自
0年以来经过的年数。
| 签名 |
|---|
|
它为每种转换接受以下参数
| 名称 (name) | type | description(描述) | 潜在值 |
|---|---|---|---|
值 |
INTEGER(整数) |
要操作的日期值(纪元毫秒整数格式) |
注意:时间戳必须采用 |
| 名称 (name) | type | description(描述) | 潜在值 |
|---|---|---|---|
值 |
STRING |
需要格式化的日期字符串 |
ISO8601 标准格式的日期字符串 |
format |
STRING |
待转换的日期字符串格式 |
有关完整列表,请参见 Java 文档中的 Patterns for Formatting and Parsing(格式化和解析模式)部分 |