# TalendDateルーチン

[TalendDate]ルーチンには、さまざまな種類の操作を実行し、日付式の形式について確認できるファンクションが複数含まれています。

情報メモ警告: パターンがyyyy-MM-ddかyyyy-MM-dd HH:mm:ssに設定されている場合を除き、これらのファンクションでは内部で[SimpleDateFormat](https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html#number)というJavaクラスが使用されています。この場合、パフォーマンス向上のため、入力された日付文字列の形式チェックは行われません。この2つのパターンのいずれかを使う場合は、入力された日付文字列が、設定されたパターンと正確にマッチすることを確認する必要があります。

[Repository] (リポジトリー)ツリービューにあるシステムルーチンフォルダーの下の[TalendDate]ノードをダブルクリックすると、これらのファンクションにアクセスできます。

TalendDateルーチンのファンクションTalendDateTalendDateルーチンのファンクション

| ファンクション | 説明 | 構文 |
| --- | --- | --- |
| addDate | n日、nか月、n時間、n分またはn秒をJavaの日付に追加し、新しい日付を返します。<br><br>日付形式は:yyyy、MM、dd、HH、mm、ss、SSSです。 | TalendDate.addDate("initial date string", ["date format - eg.: yyyy/MM/dd"], integer n,"format of the part of the date to which n is to be added - eg.:yyyy"). |
| compareDate | 指定した形式に従って2つの日付のすべての部分を比較します。日付が同一の場合は0を、最初の日付が早い場合は-1を、2番目の日付が早い場合は1を返します。<br><br>patternパラメーターは日付形式(たとえば、"yyyy-mm-dd")を指定します。 | TalendDate.compareDate(Date date1, Date date2,[String pattern]) |
| diffDate | 指定した比較パラメーターに従って、年、月、日、時間、分、秒またはミリ秒に関して2つの日付の差を返します。<br><br>dateTypeパラメーターは、比較される日付部分の形式を指定します。有効値は、"yyyy"、"MM"、"dd"、"HH"、"mm"、"ss"、"SSS"です。デフォルト値は"dd"です。<br><br>ignoreDSTパラメーターは、DST(夏時間)を考慮する必要があるかどうかを指定します。 | TalendDate.diffDate(Date date1, Date date2,[String dateType],[boolean ignoreDST])<br><br>たとえば、TalendDate.diffDate(TalendDate.parseDate("yyyy-MM-dd", "2022-12-01"), TalendDate.parseDate("yyyy-MM-dd", "2022-10-02"), "MM")は2を返します。 |
| diffDateFloor | 指定した比較パラメーターに従って、年または月に関して2つの日付の差を返します。値は最も近い整数に切り捨てられます。<br><br>dateTypeパラメーターは、比較される日付部分の形式を指定します。有効値は"yyyy"、"MM"です。 | TalendDate.diffDateFloor(Date date1, Date date2, String dateType)<br><br>たとえば、TalendDate.diffDateFloor(TalendDate.parseDate("yyyy-MM-dd", "2022-12-01"), TalendDate.parseDate("yyyy-MM-dd", "2022-10-02"), "MM")は1を返します。 |
| diffDateIgnoreDST | 指定した比較パラメーターに従って、DSTを無視して、日、月、または年に関して2つの日付間の差を返します。<br><br>dateTypeパラメーターは、比較される日付部分の形式(たとえば、"yyyy")を指定します。 | TalendDate.diffDateIgnoreDST(Date1(), Date2(),[String dateType]) |
| formatDate | 指定した形式に対応する日付文字列を返します。 | TalendDate.formatDate("date format - eg.: yyyy-MM-dd HH:mm:ss", Date() to be formatted) |
| formatDateInTimeZone | 特定のタイムゾーンで、日付を特定の形式(日時文字列)にフォーマットします。 | TalendDate.formatDateInTimeZone(String datePattern, Date tate, String TimeZoneID) |
| formatDateInUTC | UTCタイムゾーンで、日付を特定の形式(日時文字列)にフォーマットします。 | TalendDate.formatDateInUTC(String datePattern, Date tate, String TimeZoneID) |
| formatDateLocale | 対象の国で使用されている形式に従って、日付を日付/時間文字列に変更します。 | TalendDate.formatDateLocale("format target", java.util.Date date, "language or country code") |
| formatDatetimeoffset | (yyyy-MM-dd HH:mm:ss.SSSXXX)というローカルタイムゾーン形式(JDK7がサポート)であるMSSQL 2008タイプのdatetimeoffset ISO 8601文字列に日付をフォーマットします。 | TalendDate.formatDatetimeoffset(Date date) |
| getCurrentDate | 現在の日付を返します。入力パラメーターは必要ありません。 | TalendDate.getCurrentDate() |
| getDate | 指定された形式(オプション)で現在の日付と時間を返します。この文字列には、固定文字列または日付にリンクされた変数を含めることができます。デフォルトでは、文字列はDD/MM/CCYYの形式で返されます。 | TalendDate.getDate("Format of the string - ex: CCYY-MM-DD") |
| getFirstDayOfMonth | イベントの日付を現在の月の初日に変更し、新しい日付を返します。 | TalendDate.getFirstDayMonth(Date) |
| getLastDayOfMonth | イベントの日付を現在の月の末日に変更し、新しい日付を返します。 | TalendDate.getLastDayMonth(Date) |
| getPartOfDate | 指定した形式に従って日付の一部を返します。この文字列には、固定文字列または日付にリンクされた変数を含めることができます。 | TalendDate.getPartOfDate("String indicating the part of the date to be retrieved, "String in the format of the date to be parsed") |
| getRandomDate | ISO形式でランダムな日付を返します。 | TalendDate.getRandomDate("format date of the character string", String minDate, String maxDate) |
| isDate | 日付文字列が指定した形式に対応しているかどうかを確認します。結果に従って、trueまたはfalseのBoolean値を返します。 | TalendDate.isDate(Date() to be checked, String pattern, [boolean ignoreTimeZone])<br><br>このpatternによって、チェックする日付の形式が指定されます。例: yyyy-MM-dd HH:mm:ss |
| isDateStrict | 厳密なルールを使って、正しいパータンの日付として文字列値をテストします。この検証はJava 8タイムツールを使用します。タイムゾーンオフセットの範囲は-18:00から18:00までに制限されています。stringDateが正しいパターンの日付文字列であるかどうかを示すブール値を返します。 | TalendDate.isDateStrict(String stringDate, String pattern) |
| parseDate | 文字列を日付に変更します。指定された形式で日付を返します。 | TalendDate.parseDate("format date of the string to be parsed", "string in the format of the date to be parsed",["boolean about whether parsing is set to be lenient, that is to say, accepting the heuristic match with the format"]) |
| parseDateInUTC | 文字列をUTCの日付に変更します。UTC形式で日付を返します。<br><br><ul>利用対象:<li>対象製品：</li><li>Big Data</li><li>Big Data Platform</li><li>Cloud Big Data</li><li>Cloud Big Data Platform</li><li>Cloud Data Fabric</li><li>Data Fabric</li><li>Real-Time Big Data Platform</li></ul><br><br>本番環境で実行しているビッグデータジョブでは、異なるタイムゾーンで設置されている複数のマシンが関わるため、日時解析の正しい出力を確実に行うために、常にこのルーチンを使用する必要があります。 | TalendDate.parseDateInUTC("format date of the string to be parsed", "string in the format of the date to be parsed", ["boolean about whether parsing is set to be lenient, that is to say, accepting the heuristic match with the format"]) |
| parseDateLocale | 指定した形式に従って文字列を解析し、日付を抽出します。指定したローカル形式に従って日付を返します。 | TalendDate.parseDateLocale("date format of the string to be parsed", "String in the format of the date to be parsed", "code corresponding to the country or language") |
| setDate | 指定した日付の部分と値および指定した形式に従って日付の一部を変更します。 | TalendDate.setDate(Date, whole n, "format of the part of the date to be modified - eg.:yyyy") |
| TO\_CHAR | 日付を文字列に変換します。 | TalendDate.TO\_CHAR(date[,format])<br><br><ul> <li> <span>[date] (日付)</span>: 文字列に変換する日付の値。</li> <li> <span>[format] (形式)</span>: 戻り値の形式を定義する文字列。</li> </ul> |
| TO\_DATE | 文字列を日付/時刻のデータ型に変換します。 | TalendDate.TO\_DATE(string[, format])<br><br><ul> <li> <span>[string] (文字列)</span>: 日付/時刻のデータ型に変換する文字列。</li> <li> <span>[format] (形式)</span>: <span>string</span>引数の一部にマッチする形式文字列。指定されていない場合、<span>string</span>の値は<span>MM/dd/yyyy HH:mm:ss.SSS</span>という日付形式であることが必要です。</li> </ul><br><br>たとえば、TalendDate.TO\_DATE("04/24/2017 13:55:42.123")によりMon Apr 24 13:55:42 CST 2017が返されます。 |
| ADD\_TO\_DATE | 日時の値の一部に指定の数量を追加し、ユーザーがファンクションに渡す日付と同じ形式で日付を返します。 | TalendDate.ADD\_TO\_DATE(date, format, amount)<br><br><ul> <li> <span>[date] (日付)</span>: 変更する日付の値。</li> <li> <span>[format] (形式)</span>: 変更する日付の値の一部を指定する形式文字列。<ul> <li>年に使用できる有効な形式文字列: <span>Y</span>、<span>YY</span>、<span>YYY</span>、<span>YYYY</span></li> <li>月に使用できる有効な形式文字列: <span>MONTH</span>、<span>MM</span>、<span>MON</span></li> <li>日に使用できる有効な形式文字列: <span>D</span>、<span>DD</span>、<span>DDD</span>、<span>DAY</span>、<span>DY</span></li> <li>時に使用できる有効な形式文字列: <span>HH</span>、<span>HH12</span>、<span>HH24</span></li> <li>分に使用できる有効な形式文字列: <span>MI</span></li> <li>秒に使用できる有効な形式文字列: <span>SS</span></li> <li>ミリ秒に使用できる有効な形式文字列: <span>MS</span></li> </ul> </li> <li> <span>[amount] (数量)</span>: 日付の値の変更に使用する年、月、日、時などの数を指定する整数値。</li> </ul><br><br>例:<br><br>TalendDate.getCurrentDate()でMon Apr 24 14:26:03 CST 2017が返される場合、<br><br>TalendDate.ADD\_TO\_DATE(TalendDate.getCurrentDate(), "YY", 1)ではTue Apr 24 14:26:03 CST 2018が返されます。 |

情報メモ警告:

日付形式の"yyyy"と"YYYY"は大半の場合、同じ年の数字を返しますが、"YYYY"が次の位置で使われると想定どおりに機能しないことがあります。

* 年の最初の週。年が週の最初の日で開始しない場合。
* 年の最後の週。年が週の最後の日で終了しない場合。

たとえば、2016年1月2日の3日前の日付がどうなるかを計算する場合、次のコードは間違った日付を返します。

```
System.out.println(TalendDate.formatDate("YYYY-MM-dd", TalendDate.addDate(TalendDate.TO_DATE("01/02/2016 08:10:30.123"), -3, "dd")));
```

他方、次のコードは想定どおりに機能します。

```
System.out.println(TalendDate.formatDate("yyyy-MM-dd", TalendDate.addDate(TalendDate.TO_DATE("01/02/2016 08:10:30.123"), -3, "dd")));
```

したがって、通常は"yyyy"を使用してください。これは暦年を表します。

### このセクション内

* [日付をフォーマットする](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0-R2024-04-and-earlier/formatting-date)
* [日付の確認](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0-R2024-04-and-earlier/checking-date)
* [日付を比較](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0-R2024-04-and-earlier/comparing-dates)
* [日付の設定](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0-R2024-04-and-earlier/configuring-date)
* [日付の解析](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0-R2024-04-and-earlier/parsing-date)
* [日付の一部を取得する](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0-R2024-04-and-earlier/retrieving-part-of-date)
* [現在の日付をフォーマットする](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0-R2024-04-and-earlier/formatting-current-date)