> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 日付フォーマッタ

> ArcScript で日付と時刻の値を解析、フォーマット、比較、変換するためのフォーマッタ。

## 一般的な日付フォーマッタ

以下のフォーマッタは、最も一般的な日付フォーマッタです。参考までに各フォーマッタの例を提供しています。

その他の日付フォーマットの例は[サンプル日付フォーマット](#サンプル日付フォーマット)にあります。

<Note>一部のフォーマッタのオプションパラメータを囲う角括弧は、必須ではありません。これらは、パラメータがオプションであることを示すためにあります。</Note>

### now(\[outputformat])

指定された *outputformat* に従って現在のシステム日時を返します（デフォルトの形式は`yyyy-MM-dd'T'hh:mm:sszzz` です）。このフォーマッタは入力属性（変数）を変更しないという点で珍しいため、入力属性は必要ありません。

* **outputformat**：フォーマット指定子（オプション）。有効な指定子は、`d`（短い形式の日）、`D`（長い形式の日）、`f`（長い形式の日/短い形式の時間 ）、`F`（長い形式の日/時間）、`g`（標準の短い形式の日/時）、`G`（標準の短い形式の日/長い形式の時間）、`r` または`R`（RFC1123 形式）、`s`（ソート可能な形式の日/時）、`t`（短い形式の時間）、`T`（長い形式の時間）、`file`（Windows ファイル時間）、`MM/dd/yy` などです。

#### 例

```xml theme={null}
<arc:set attr="timestamp" value="[now()]" />
```

### todate(\[outputformat]\[, inputformat]\[, strictInputFormat])

入力属性を、 *outputformat* で指定された形式の日付としてフォーマットします（デフォルトの出力形式は`yyyy-MM-dd'T'hh:mm:sszzz` です）。日付フォーマットの例とその表現方法については、[サンプル日付フォーマット](#サンプル日付フォーマット)を参照してください。

<Note>フォーマッタが空の入力属性で呼び出された場合、上記のデフォルトの出力形式でフォーマットされた現在のシステム時刻が出力されます。</Note>

* **outputformat**：フォーマット指定子（オプション）。有効な指定子は、`d`（短い形式の日）、`D`（長い形式の日）、`f`（長い形式の日/短い形式の時間 ）、`F`（長い形式の日/時間）、`g`（標準の短い形式の日/時）、`G`（標準の短い形式の日/長い形式の時間）、`r` または`R`（RFC1123 形式）、`s`（ソート可能な形式の日/時）、`t`（短い形式の時間）、`T`（長い形式の時間）、`file`（Windows ファイル時間）、`MM/dd/yy` などです。
* **inputformat**：入力フォーマット指定子（オプション）。デフォルトは`autodetected` です。
* **strictInputFormat**：受信した日付値が入力形式と一致するかどうかをチェックします。一致しない場合、エラーをスローします。

フォーマッタは入力値のフォーマットを自動検出しようとしますが、フォーマッタが入力フォーマットを判別できない場合は、 *inputformat* パラメータを指定できます。

*strictInputFormat* 引数を使用して、受信した日付値が入力形式と一致するかどうかをチェックします。一致しない場合は、タスクは日付を標準の日付形式に変換する代わりにエラーをスローします。デフォルトではチェックしません。強制的にチェックするには、フォーマッタに`true` を追加します。

#### 例

```xml theme={null}
<arc:set attr="simpleDate" value="01-30-2020" />
<arc:set attr="reformattedDate" value="[simpleDate | todate('yyyyMMdd', 'dd-MM-yyyy')]" />
```

### dateadd(intervaltype, value\[, outputformat]\[, inputformat])

入力日に指定された時間を加算し、その結果を返します。

* **intervaltype**：追加する時間の単位（year、month、day、hour、minute、second、またはmillisecond）。
* **value**： *intervaltype* で選択された単位をいくつ分追加するか。
* **outputformat**：フォーマット指定子（オプション）。有効な指定子は、`d`（短い形式の日）、`D`（長い形式の日）、`f`（長い形式の日/短い形式の時間 ）、`F`（長い形式の日/時間）、`g`（標準の短い形式の日/時）、`G`（標準の短い形式の日/長い形式の時間）、`r` または`R`（RFC1123 形式）、`s`（ソート可能な形式の日/時）、`t`（短い形式の時間）、`T`（長い形式の時間）、`file`（Windows ファイル時間）、`MM/dd/yy` などです。
* **inputformat**：入力フォーマット指定子（オプション）。デフォルトは`autodetected` です。

フォーマッタは入力値のフォーマットを自動検出しようとしますが、フォーマッタが入力属性の日付フォーマットを判別できない場合は、 *inputformat* パラメータを指定できます。結果は、 *outputformat* で指定された形式で返されます（デフォルトの形式は`yyyy-MM-dd'T'hh:mm:sszzz` です）。

#### 例

```xml theme={null}
<arc:set attr="shipdate" value="2020-03-15" />
<arc:set attr="estmArrivalDate" value="[shipdate | dateadd('day', 2)]" />
```

## その他の日付フォーマッタ

以下は、あまり一般的に使用されないフォーマッタのリストです。

### compare(\[value]\[, inputformat])

属性値とパラメータ値によって表される日付の相対値を示す符号付き数値を返します。

* **value**：属性値と比較する日付の文字列表現（オプション）。デフォルトは`now` です。
* **inputformat**：入力フォーマット指定子（オプション）。デフォルトは`autodetected` です。

### convertTimezone(\[targetTimezone]\[, inputformat]\[, outputformat]\[, sourceTimezone])

`datetime` をあるタイムゾーンから別のタイムゾーンに変換します。

* **targetTimezone**：変換先のタイムゾーン。デフォルトは`Local`（アプリケーションのサーバーのローカルタイムゾーン）です。タイムゾーン文字列は、`America/Los_Angeles` のようなIANA 形式である必要があります。
* **inputformat**：入力フォーマット指定子（オプション）。デフォルトは`autodetected` です。
* **outputformat**：出力フォーマット（オプション）（例：`MM/dd/yyyy HH:mm`）
* **sourceTimezone**：ソースの日時のタイムゾーン。入力日が指定されていない場合にのみ必須です。

#### 例

```xml theme={null}
<arc:set attr="old.timezone" value="2025-04-25T15:53:57" />
<arc:set attr="output.data" value="The current timezone is [old.timezone|converttimezone('Asia/Tokyo','yyyy-MM-ddTHH:mm:ss','yyyy-MM-dd HH:mm:ss','America/Los_Angeles')]" />
<arc:set attr="output.filename" value="time.txt" />
<arc:push item="output" />
```

### date(\[outputformat])

現在のシステム日時を、パラメータで指定されている場合は、指定された形式で返します。

* **outputformat**：フォーマット指定子（オプション）。有効な指定子は、`d`（短い形式の日）、`D`（長い形式の日）、`f`（長い形式の日/短い形式の時間 ）、`F`（長い形式の日/時間）、`g`（標準の短い形式の日/時）、`G`（標準の短い形式の日/長い形式の時間）、`r` または`R`（RFC1123 形式）、`s`（ソート可能な形式の日/時）、`t`（短い形式の時間）、`T`（長い形式の時間）、`file`（Windows ファイル時間）、`MM/dd/yy` などです。

<Note>このフォーマッタは、上で説明した *now()* フォーマッタのエイリアスです。</Note>

### datediff(\[interval]\[, value]\[, inputformat])

現在と *value* パラメータで指定した日付との差を（ *interval* パラメータで指定した単位で）返します。

* **interval**：結果を取得する間隔（オプション）。day、hour、minute、second、またはmillisecond を指定します。
* **value**：属性値と比較する日付の文字列表現（オプション）。デフォルトは`now` です。
* **inputformat**：入力フォーマット指定子（オプション）。デフォルトは`autodetected` です。

### day(\[inputformat])

属性値で表される日付の、1から31までの値で表される日の部分を返します。

* **inputformat**：入力フォーマット指定子（オプション）。デフォルトは`autodetected` です。

### dayofweek(\[inputformat])

属性値で表される日付の曜日を返します。

* **inputformat**：入力フォーマット指定子（オプション）。デフォルトは`autodetected` です。

### dayofyear(\[inputformat])

属性値で表される日付の、1から366までの値で表される年日を返します。

* **inputformat**：入力フォーマット指定子（オプション）。デフォルトは`autodetected` です。

### filetimenow()

現在のシステムファイルの時刻の日時を返します。

### fromfiletime(\[outputformat])

有効なファイル時刻を、`outputformat` パラメータで指定された形式の有効な日時値に変換します（パラメータが指定されている場合）。

* **outputformat**：フォーマット指定子（オプション）。有効な指定子は、`d`（短い形式の日）、`D`（長い形式の日）、`f`（長い形式の日/短い形式の時間 ）、`F`（長い形式の日/時間）、`g`（標準の短い形式の日/時）、`G`（標準の短い形式の日/長い形式の時間）、`r` または`R`（RFC1123 形式）、`s`（ソート可能な形式の日/時）、`t`（短い形式の時間）、`T`（長い形式の時間）、`file`（Windows ファイル時間）、`MM/dd/yy` などです。

### isleap(\[ifleap]\[, ifnotleap])

属性値で表される4桁の年がうるう年であれば *true* （または *ifleap* ）、それ以外の場合は *false* （または *ifnotleap* ）を返します。

* **ifleap**：属性値がうるう年の場合に返される値（オプション）。
* **ifnotleap**：属性値がうるう年でない場合に返される値（オプション）。

### month(\[inputformat])

属性値で表される日付の、1から12までの値で表される月の部分を返します。

* **inputformat**：入力フォーマット指定子（オプション）。デフォルトは *autodetected* です。

### timezone()

デフォルトのタイムゾーンをIANA 形式で取得します（例：`America/Los_Angeles`）。

#### 例

```xml theme={null}
<arc:set attr="output.data" value="The current timezone is [_|timezone()]" />
<arc:set attr="output.filename" value="time.txt" />
<arc:push item="output" />
```

### tofiletime(\[inputformat])

有効な日時を有効なファイル時刻値に変換します。

* **inputformat**：入力フォーマット指定子（オプション）。デフォルトは`autodetected` です。

### toutc(\[outputformat]\[, inputformat])

属性値で指定された日付を、 *outputformat* パラメータ（指定されている場合）で指定された形式で UTC に変換して返します。

* **outputformat**：フォーマット指定子（オプション）。有効な指定子は、`d`（短い形式の日）、`D`（長い形式の日）、`f`（長い形式の日/短い形式の時間 ）、`F`（長い形式の日/時間）、`g`（標準の短い形式の日/時）、`G`（標準の短い形式の日/長い形式の時間）、`r` または`R`（RFC1123 形式）、`s`（ソート可能な形式の日/時）、`t`（短い形式の時間）、`T`（長い形式の時間）、`file`（Windows ファイル時間）、`MM/dd/yy` などです。

### utcnow(\[outputformat])

現在のシステムのUTC 日時を返します。

* **outputformat**：フォーマット指定子（オプション）。有効な指定子は、`d`（短い形式の日）、`D`（長い形式の日）、`f`（長い形式の日/短い形式の時間 ）、`F`（長い形式の日/時間）、`g`（標準の短い形式の日/時）、`G`（標準の短い形式の日/長い形式の時間）、`r` または`R`（RFC1123 形式）、`s`（ソート可能な形式の日/時）、`t`（短い形式の時間）、`T`（長い形式の時間）、`file`（Windows ファイル時間）、`MM/dd/yy` などです。

### weekday(\[inputformat])

曜日を、月曜日が0、日曜日が6 の整数値で返します。

* **inputformat**：入力フォーマット指定子（オプション）。デフォルトは`autodetected` です。

### year(\[inputformat])

属性値で表される日付の年部分を返します。

* **inputformat**：入力フォーマット指定子（オプション）。デフォルトは`autodetected` です。

## サンプル日付フォーマット

以下は、参照用の日付フォーマット文字列のサンプルです。これらを使って、ユースケースに合わせて日付フォーマッタをカスタマイズしてください。各エディションでサポートされている内容に違いがあるため、このセクションではクロスプラットフォーム版と.NET 版の両方の結果を記載しています。

次のテーブルの各例では、日付は2024年3月5日を使用します。時刻は、東部標準時間（UTC-5）の午前0時から12時間31分5秒336ミリ秒後です。

| **日付フォーマット文字列**              | **クロスプラットフォーム版**                | **.NET 版**                      |
| ---------------------------- | ------------------------------- | ------------------------------- |
| MM-dd-yy                     | 03-05-24                        | 03-05-24                        |
| MM/dd/yyyy HH:mm             | 03/05/2024 12:31                | 03/05/2024 12:31                |
| yyyy-MM-dd HH:mm:ss          | 2024-03-05 12:31:05             | 2024-03-05 12:31:05             |
| yyyy-MM-dd HH:mm:ss.SSS      | 2024-03-05 12:31:05.336         | .NET には適用されません                  |
| yyyy-MM-dd HH:mm:ss.fff      | 2024-03-05 12:31:05.336         | 2024-03-05 12:31:05.336         |
| yyyy-MM-dd HH:mm:ss X        | 2024-03-05 17:31:05 -05         | .NET には適用されません                  |
| ddd dd MMM yyyy HH:mm:ss zzz | Tue 05 Mar 2024 12:31:05 -05:00 | Tue 05 Mar 2024 12:31:05 -05:00 |
| ddd dd MMM yyyy HH:mm:ss z   | Tue 05 Mar 2024 12:31:05 -0500  | Tue 05 Mar 2024 12:31:05 -5     |

### リテラル文字を含む日付フォーマット

DateTime 文字列でリテラル（'T' など）を扱う場合は、フォーマッタの外部で使用される可能性のある引用符に注意してください。例えば、value XML 属性でフォーマッタを使用して{siteNameShort}Script 属性に値を割り当てる場合、文字列の終端が早すぎないように、別の引用符スタイルやエスケープシーケンスを使う必要がある場合があります。

例えば、カスタムスクリプトでアイテムの属性にdatetime 値を作成し、リテラルが必要な場合、開始タグと終了[arc:set](../keyword-reference/op-arc-set) タグの間に属性の値を定義することができます。`value=""` は設定されていないことに注意してください。

```xml theme={null}
<arc:set attr="out.data">[_ | now("yyyy-MM-dd'T'HH:mm:ss")]</arc:set>
```
