Luxon 的日期和时间
Luxon是一个 JavaScript 库,可以更轻松地处理日期和时间。有关如何使用 Luxon 的完整详细信息,请参阅Luxon 的文档。n8n 在节点之间传递日期时会使用字符串,因此您需要对其进行解析。Luxon 让解析过程更加简单。
Python 支持
Luxon 是一个 JavaScript 库。n8n 创建的两个便捷
变量在代码节点中使用 Python 时可用,但它们的功能有限:- 您无法对这些变量执行 Luxon 操作。例如,Python 中没有 的等效项。
- 通用 Luxon 功能(例如将日期字符串转换为 Luxon )不适用于 Python 用户。
变量
n8n 使用 Luxon 提供两个自定义变量:
- :包含当前时间戳的 Luxon 对象。等同于。
- :一个 Luxon 对象,包含当前时间戳,向下舍入到天数。相当于。
请注意,这些变量转换为字符串时可以返回不同的时间格式。这与 Luxon 的行为相同。
1 2 3 4 5 6 | |
1 2 3 4 5 6 | |
1 2 3 4 5 6 | |
n8n 提供内置便捷函数,支持日期表达式中的数据转换。更多信息,请参阅
数据转换函数 | 日期。n8n 中的日期和时间行为
请注意以下事项:
- 在工作流中,n8n 会在节点之间将日期和时间转换为字符串。在对其他节点的日期和时间进行运算时,请记住这一点。
- 使用原生 JavaScript,您可以使用 将字符串转换为日期。在 Luxon 中,您必须使用明确说明格式的函数,例如或。
在 n8n 中设置时区
Luxon 使用 n8n 时区。此值可以是以下之一:
- 默认:
- 使用环境变量设置 n8n 实例的自定义时区。
- 在工作流设置中配置的单个工作流的自定义时区。
常见任务
本节提供一些常见操作的示例。更多示例和详细指南请参阅
Luxon 官方文档。将日期字符串转换为 Luxon
您可以将日期字符串和其他日期格式转换为 Luxon DateTime 对象。您可以从标准格式或任意字符串进行转换。
Luxon DateTime 和 JavaScript Date 之间的区别
使用原生 JavaScript,您可以使用 将字符串转换为日期。在 Luxon 中,您必须使用明确说明格式的函数,例如或。
如果您有一个采用受支持的标准技术格式的日期:
大多数日期使用。这将根据 ISO 8601 字符串创建一个 Luxon DateTime。例如:
1 | |
1 | |
Luxon 的 API 文档有更多关于
fromISO 的信息。Luxon 提供了处理多种格式转换的函数。详情请参阅 Luxon 的
技术格式解析指南。如果您有一个不使用标准格式的字符串日期:
使用 Luxon 的
Ad-hoc 解析。为此,请使用函数,提供字符串和一组描述格式的标记。例如,您有 n8n 的成立日期,2019 年 6 月 23 日,格式为。您想将其转换为 Luxon 对象:
1 | |
1 | |
使用临时解析时,请注意 Luxon 关于
限制的警告。如果您看到意外结果,请尝试他们的调试指南。获取从今天起 n 天
获取今天之前或之后的天数。
例如,您想设置一个字段以始终显示当前日期前七天的日期。
在表达式编辑器中输入:
1 | |
2019 年 6 月 23 日,这将回归。
为了方便起见,本例使用了 n8n 的自定义变量。它相当于。
例如,您需要一个包含当前日期前七天的日期的变量。
在代码编辑器中输入:
1 | |
2019 年 6 月 23 日,这将回归。
为了方便起见,本例使用了 n8n 的自定义变量。它相当于。
更多详细信息和示例,请参阅:
- Luxon 的数学指南
- 他们关于DateTime plus和DateTime minus 的API 文档
创建人类可读的日期
在
“获取从今天起 n 天后的日期”中,示例获取当前日期前七天的日期,并将其作为(用于表达式)或(在代码节点中)返回。为了使其更具可读性,您可以使用 Luxon 的格式化函数。例如,您希望将包含日期的字段格式化为 DD/MM/YYYY,以便在 2019 年 6 月 23 日返回。
此表达式获取今天七天前的日期,并将其转换为 DD/MM/YYYY 格式。
1 | |
1 | |
你可以改变格式。例如:
1 | |
2019 年 6 月 23 日,返回“2019 年 6 月 16 日”。
1 | |
2019 年 6 月 23 日,返回“2019 年 6 月 16 日”。
请参阅 Luxon 的
toLocaleString(人类字符串)指南以了解更多信息。获取两个日期之间的时间
要获取两个日期之间的时间,请使用 Luxon 的 diffs 功能。该功能会将一个日期与另一个日期相减,并返回一个时长。
例如,获取两个日期之间的月份数:
1 | |
这将返回。
1 | |
这将返回。
请参阅 Luxon 的
Diffs以了解更多信息。一个更长的例子:离圣诞节还有几天?
此示例汇集了 Luxon 的几个功能,使用了 JMESPath,并进行了一些基本的字符串操作。
场景:你想要一个倒计时功能,显示到12月25日。它应该每天显示距离圣诞节还剩多少天。你不想在明年更新它——它需要每年都无缝衔接。
1 | |
这将输出。例如,在 3 月 9 日,它输出“距离圣诞节还有 291 天!”。
该表达式的作用的详细解释:
- : 表示表达式的开始。
- :一个字符串。
- :用于连接两个字符串。
- :这与获取两个日期之间的时间中的示例类似,但它使用了 n8n 的自定义变量。
- :此部分使用 获取当前年份,将其连同月份和日期一起转换为 ISO 字符串,然后获取整个 ISO 字符串并将其转换为 Luxon DateTime 数据结构。它还会告诉 Luxon 您想要以天为单位的持续时间。
- 将 diff() 的结果转换为更可用的对象。此时,表达式返回。例如,3 月 9 日, 。
- 使用 JMESPath 语法从对象中检索天数。有关将 JMESPath 与 n8n 结合使用的更多信息,请参阅我们的JMESpath文档。这将以负数形式返回距离圣诞节还有多少天。
- 将数字转换为字符串并删除。
- :另一个字符串,用将其连接到前一个字符串。
- : 表示表达式的结束。
1 | |
这将输出。例如,在 3 月 9 日,它输出“距离圣诞节还有 291 天!”。
代码作用的详细解释:
- :一个字符串。
- :用于连接两个字符串。
- :这与获取两个日期之间的时间中的示例类似,但它使用了 n8n 的自定义变量。
- :此部分使用 获取当前年份,将其连同月份和日期一起转换为 ISO 字符串,然后获取整个 ISO 字符串并将其转换为 Luxon DateTime 数据结构。它还会告诉 Luxon 您想要以天为单位的持续时间。
- 将 diff() 的结果转换为更可用的对象。此时,表达式返回。例如,3 月 9 日, 。
- 使用 JMESPath 语法从对象中检索天数。有关将 JMESPath 与 n8n 结合使用的更多信息,请参阅我们的JMESpath文档。这将以负数形式返回距离圣诞节还有多少天。
- 将数字转换为字符串并删除。
- :另一个字符串,用将其连接到前一个字符串。