BizRobo! チートシート：日付のフォーマット変換 あれこれ

## はじめに

旧 `ベーシックエンジン ロボット`[^1] と `ロボット`[^2] ではデータ変換に利用する書式（Expression）に違いがあります。

なかなかとっつきにくい面もあり、ドキュメントを読んでもいまいち使い方わわからなかったのでコツコツとためておいたチートシートを公開します。

### 使用時の注意というか備忘

変数には型というのがあって、フォーマット変換前後で型が変わる場合（日付 ⇒ 文字列、文字列 ⇒ 数字　など）には（変換前と）同じ変数には格納できないこともあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/74edfa83-567e-0d8c-f997-43a368adfa6e.png)
変数同士の計算や比較などをしないのであれば大抵は `Text` 型の変数を作っておけば間に合いますが、念のため。意識していきましょう！

[^1]: v11.1以前は Webロボット、や DSロボットと呼ばれていたやつです。
[^2]: v11.1以前は DAロボット と呼ばれていたやつです。（リモート端末を使わない Chromium や Built-in-Excel も Desktop Automationとして扱われていたのは違和感ですが）

## 文字列型・日付フォーマットへの変更

### 今

```javascript
text(dateTime(),"yyyy-MM-dd HH:mm:ss.SSS")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/2db0d05c-86c5-ab26-3871-01e887ed6314.png)

### 今日
```javascript
text(date(),"yyyy-MM-dd")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/7e9779ec-2398-08de-788a-59816d87d07f.png)

### 現在時刻
```javascript
text(time(),"HH:mm:ss.SSS")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/2e670765-492c-4226-1aa5-86bd89769d55.png)

## フォーマットシンボルの使い方編

フォーマットシンボルや書式については オンラインヘルプの [DateTime の書式設定](https://docshield.kofax.com/RPA/ja_JA/11.3.0_5cdzhlgb3t/help/rpa_help/help_main/designstudio/c_format_datetime.html) を参照。

### `Q` を使ったクォータ の表示
```javascript
text(date(),"M 月 は第 Q クォータ")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/3c7aaa43-98f1-5c53-deaa-a4be4992b8c8.png)

### `w` を使った週番号の表示（年間での週番号）
```javascript
text(date(),"yyyy 年 M 月 d 日は 今年の w 週目")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/0e154ff6-41d8-edf3-a984-6127793896fc.png)

### `W` を使った週番号の表示（月間での週番号）
```javascript
text(date(),"yyyy 年 M 月 d 日は 今月の W 週目")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/9c9ea77f-1435-9815-2e1f-f225691e26c6.png)

### `D` を使った日番号の表示（年間での日番号）
```javascript
text(date(),"yyyy 年 M 月 d 日 は今年 D 日目")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/cc009bd2-6d86-1161-2691-723197f1f8a5.png)

### `E` と `EEEE` を使った曜日の表示
```javascript
text(date(),"yyyy 年 M 月 d 日(E) は EEEE")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/244f6068-3149-c54c-3e9a-85c95bcf7a66.png)

### `a` を使った 午前/午後 の表示
```javascript
text(dateTime(),"yyyy-MM-dd a hh 時")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/9a784147-2581-db74-7026-1942b1334a74.png)

## 関数を使ったデータ変換
:::note
以下、2023年7月19日を基準日として算出
:::

### 今月一日（文字列型）
```javascript
text(
  date().withDay(1)
  ,"yyyy-MM-dd"
)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/bc3dd074-9999-a41d-c0ff-9dcfd0ae5c82.png)

### 今月末（文字列型）
```javascript
text(
  date().withDay(1).plusMonths(1).minusDays(1)
  ,"yyyy-MM-dd"
)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/33d5ecb5-bd4d-f8e7-d16a-e1a8786dad4b.png)

### 来月一日（文字列型）
```javascript
text(
  date().withDay(1).plusMonths(1)
  ,"yyyy-MM-dd"
)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/b82e5b51-615b-a1bd-e0d9-47d6151944d9.png)

### 7月の残日数（整数型）
```javascript
date().daysUntil(date(2023, 8, 1))
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/c507b224-3716-1f4d-19d1-cefaf80b06d1.png)

### うるう年チェック（真偽型）
```javascript
isLeapYear(date())
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/969476a5-3cea-b23c-5ca6-46470097556c.png)