使用 Luxon 处理日期和时间#
Luxon 是一个 JavaScript 库,可简化日期和时间处理。有关 Luxon 的完整使用说明,请参阅 Luxon 官方文档。
n8n 在节点间以字符串形式传递日期,因此需要进行解析。Luxon 可简化此过程。
Python 支持说明
Luxon 是 JavaScript 库。在代码节点中使用 Python 时,虽然可以访问 n8n 创建的两个便捷变量,但其功能受限:
- 无法对这些变量执行 Luxon 操作。例如,Python 中没有与
$today.minus(...)等效的操作 - 通用 Luxon 功能(如将日期字符串转换为 Luxon)不适用于 Python 用户
n8n 中的日期和时间行为#
请注意以下事项:
- 在工作流中,n8n 会在节点间将日期和时间转换为字符串。对其他节点的日期时间进行算术运算时请特别注意
- 在原生 JavaScript 中可使用
new Date('2019-06-23')转换字符串,而 Luxon 必须使用明确指定格式的函数,例如DateTime.fromISO('2019-06-23')或DateTime.fromFormat("23-06-2019", "dd-MM-yyyy")
在 n8n 中设置时区#
Luxon 使用 n8n 的时区设置,该值为以下选项之一:
- 默认值:
America/New_York - 通过
GENERIC_TIMEZONE环境变量为 n8n 实例设置的自定义时区 - 在工作流设置中为单个工作流配置的自定义时区
常见任务#
本节提供常用操作示例,更多示例和详细指南请参阅 Luxon 官方文档。
获取当前日期时间或日期#
使用 $now 和 $today Luxon 对象 获取当前时间或日期:
now:包含当前时间戳的 Luxon 对象,等效于DateTime.now()today:包含当前时间戳并截取至天数的 Luxon 对象,等效于DateTime.now().set({ hour: 0, minute: 0, second: 0, millisecond: 0 })
注意这些变量在转换为字符串时可能返回不同时间格式:
| 表达式 (JavaScript) | 代码节点 (JavaScript) | 代码节点 (Python) |
|---|---|---|
{{$now}} // n8n displays the ISO formatted timestamp // For example 2022-03-09T14:02:37.065+00:00 {{"Today's date is " + $now}} // n8n displays "Today's date is <unix timestamp>" // For example "Today's date is 1646834498755" | $now // n8n displays <ISO formatted timestamp> // For example 2022-03-09T14:00:25.058+00:00 let rightNow = "Today's date is " + $now // n8n displays "Today's date is <unix timestamp>" // For example "Today's date is 1646834498755" | _now # n8n displays <ISO formatted timestamp> # For example 2022-03-09T14:00:25.058+00:00 rightNow = "Today's date is " + str(_now) # n8n displays "Today's date is <unix timestamp>" # For example "Today's date is 1646834498755" |
n8n 提供内置便捷函数以支持表达式中的日期 数据转换。更多信息请参阅数据转换函数 | 日期。
将 JavaScript 日期转换为 Luxon#
将原生 JavaScript 日期转换为 Luxon 日期的方法:
- 在表达式中使用
.toDateTime()方法,例如{{ (new Date()).ToDateTime() }} - 在代码节点中使用
DateTime.fromJSDate(),例如let luxondate = DateTime.fromJSDate(new Date())
将日期字符串转换为 Luxon#
您可以将日期字符串及其他日期格式转换为 Luxon DateTime 对象,支持从标准格式和任意字符串进行转换。
Luxon DateTime 与 JavaScript Date 的差异:
使用原生 JavaScript 时,可通过 new Date('2019-06-23') 将字符串转换为日期。而在 Luxon 中,必须使用明确声明格式的函数,例如 DateTime.fromISO('2019-06-23') 或 DateTime.fromFormat("23-06-2019", "dd-MM-yyyy")。