> For the complete documentation index, see [llms.txt](https://doc.duaer.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.duaer.com/zh/code/builtin/data-transformation-functions/dates.md).

# Duaer 日期上的转换方法

Duaer 表达式里，$now 和 $today 是 Luxon 的 DateTime。字符串或数字要先 toDateTime()，再调用 format、plus、setZone。
## 先变成 DateTime

日期运算对象是 DateTime，不是普通的 Date。$now 和 $today 已经是 DateTime。字符串、数字用 toDateTime() 转过去。库本身的差别——包括 Code 节点里要用 toFormat 而不是 format——见[在 Duaer 里用 Luxon 处理日期](/zh/code/cookbook/luxon.md)。

```
{{ $json.createdAt.toDateTime().toFormat("yyyy-MM-dd") }}
```

## DateTime 上常用的方法和属性

- year、month、day、hour、minute、second、millisecond、quarter、weekNumber、weekday：读出那一部分。monthLong、monthShort、weekdayLong、weekdayShort 是文字。
- toFormat 在快捷页用过。format() 是表达式里的格式化扩展。
- plus(数量, 单位)、minus(数量, 单位)：加减。startOf(单位)、endOf(单位)：取这一单位的开始或结束。
- set({ ... })：改其中一部分。setZone(时区)、toUTC()、toLocal()：换时区。
- toISO()、toMillis()、toSeconds()、toString()、toLocaleString()、toRelative()：输出成字符串或数字。
- diffTo(另一个时间)、diffToNow()：算间隔。equals()、hasSame(单位)、isBetween()：比较。
- extract(单位)：取出单位。isEmpty()、isNotEmpty()、isInDST、locale、zone：空值、夏令时、语言和时区。
- setLocale(语言)：改这份时间的语言，影响月份名字这类输出。
## Questions

### 在 Duaer 里 $now 是什么类型？

在 Duaer 表达式里，$now 和 $today 是 Luxon 的 DateTime。字符串或数字要先 toDateTime()，再调用 toFormat、plus 或 setZone。

### Duaer 表达式的 plus 和 Code 节点的 plus 一样吗？

不一样。Duaer 表达式可以写 plus(7, "days")。Code 节点里的原生 Luxon 要写成 plus({ days: 7 })。表达式的 format() 对应 Code 节点的 toFormat()。

