org.opengion.fukurou.util
クラス HybsDateUtil
java.lang.Object
org.opengion.fukurou.util.HybsDateUtil
public final class HybsDateUtil
- extends Object
HybsDateUtil.java は、共通的に使用される Date,Calender関連メソッドを集約した、staticメソッドのみで構成されるクラスです。
- 変更履歴:
5.5.7.2 (2012/10/09) 新規作成 |
- 機能分類
- ユーティリティ
- バージョン
- 5.5
- 作成者
- Kazuhiko Hasegawa
- 導入されたバージョン:
- JDK7.0,
メソッドの概要 |
static void |
calendarCalc(Calendar now,
String prmB)
開始前設定値、または 終了後設定値の文字列から、オプション文字列を合成します。 |
static void |
calendarCalc(Calendar now,
String prmB,
int intC)
開始前設定値、または 終了後設定値の文字列から、オプション文字列を合成します。 |
static Calendar |
getCalendar(String value)
指定の引数の日付け文字列より、カレンダオブジェクトを作成します。 |
static String |
getDate()
現在日付、時刻を指定のフォーマットで文字列に変換して返します。 |
static String |
getDate(long time,
String form)
指定時刻を指定のフォーマットで文字列に変換して返します。 |
static String |
getDate(String form)
現在時刻を指定のフォーマットで文字列に変換して返します。 |
static String |
getDateFormat(String key,
String prmA,
String prmB)
日付関係の情報を簡易的に処理します。 |
static String |
getDateFormat(String key,
String prmA,
String prmB,
int intC)
日付関係の情報を簡易的に処理します。 |
static String |
getDatePlus(String baseDate,
int plus)
指定の引数の日付け文字列(yyyyMMdd)より、日付を加算して返します。 |
static String |
getDatePlus(String baseDate,
String plus,
int defTani,
String format)
指定の引数の日付け文字列(yyyyMMdd、yyyyMMddHHmmss)に、日付を加算して返します。 |
static String |
getMonthPlus(String baseDate,
int plus)
現在の月に、指定の月数をプラスした日付文字列を返します。 |
static boolean |
isStrict(String value)
日付文字列の厳密な整合性チェックを行います。 |
static String |
parseDate(String value,
int size)
日付文字列の桁数の整合性を取ります。 |
static String |
parseDate(String value,
int minSize,
int maxSize)
日付文字列の桁数の整合性を取ります。 |
static String |
parseNumber(String value)
指定の文字列から、以下の文字を削除した文字列を返します。 |
static String |
parseTimestamp(String value)
指定の文字列から、yyyy-mm-dd hh:mm:ss[.f...] |
クラス java.lang.Object から継承されたメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
getDate
public static final String getDate()
- 現在日付、時刻を指定のフォーマットで文字列に変換して返します。
出力フォーマットは、"yyyy/MM/dd HH:mm:ss" 固定です。
- 戻り値:
- 現在日付、時刻 ( 例 2012/09/05 18:10:24 )
- 変更履歴:
5.5.7.2 (2012/10/09) 新規作成 |
getDate
public static final String getDate(String form)
- 現在時刻を指定のフォーマットで文字列に変換して返します。
フォーマットの指定方法は、java.text.SimpleDateFormat の指定方法と同一です。
変換時のロケーションは、Locale.JAPAN です。
現在時刻は、new Date() で求めます。
- パラメータ:
form
- フォーム文字列 ( 例 "yyyy/MM/dd HH:mm:ss.SSS" )
- 戻り値:
- 現在日付、時刻
- 関連項目:
SimpleDateFormat
- 変更履歴:
5.5.7.2 (2012/10/09) 新規作成 |
getDate
public static final String getDate(long time,
String form)
- 指定時刻を指定のフォーマットで文字列に変換して返します。
フォーマットの指定方法は、java.text.SimpleDateFormat の指定方法と同一です。
変換時のロケーションは、Locale.JAPAN です。
指定時刻は、new Date( time ) で求めます。
- パラメータ:
time
- 指定のカレントタイムのロング値form
- フォーム文字列 ( 例 "yyyy/MM/dd HH:mm:ss.SSS" )
- 戻り値:
- 現在日付、時刻( 例 2001/04/17 15:48:22 )
- 変更履歴:
5.5.7.2 (2012/10/09) 新規作成 |
parseNumber
public static final String parseNumber(String value)
- 指定の文字列から、以下の文字を削除した文字列を返します。
'/' , '-' , ' ' , ':' の数字以外の文字を含むフォーマットされた
日付文字列を、日付データだけに変換する場合に利用することを想定しています。
よって、マイナス記号や、小数点、コンマなども削除されます。
このメソッドでは、日付としての整合性や桁チェックは行いません。
引数が、null の場合は、ゼロ文字列に、変換します。
- パラメータ:
value
- 任意の文字列(例:2001/04/17 15:48:22)
- 戻り値:
- 数字だけで構成される文字列(例:20010417154822)(nullはゼロ文字列を返します)
- 変更履歴:
5.5.7.2 (2012/10/09) 新規作成 |
5.5.8.3 (2012/11/17) 数字のみ返す仕様だったが、対象以外の文字入力はそのまま返すよう変更 |
parseTimestamp
public static final String parseTimestamp(String value)
- 指定の文字列から、yyyy-mm-dd hh:mm:ss[.f...] 形式の文字列を作成します。
これは、java.sql.Timestamp オブジェクトを文字列から作成するに当たり、
Timestamp の文字列形式にしなければならないためです。
桁数は、8桁 または、14桁以外の場合は、変換エラーとします。
- パラメータ:
value
- 任意の文字列(例:20010417 or 20010417154822)
- 戻り値:
- Timestampの文字列形式(例:2001-04-17 00:00:00 or 2001-04-17 15:48:22)
- 変更履歴:
5.5.8.5 (2012/11/27) 新規作成 |
parseDate
public static final String parseDate(String value,
int size)
- 日付文字列の桁数の整合性を取ります。
これは、内部で、parseNumber(String) 処理により、不要なフォーマット記号を削除します。
ここでは、基本的には、6文字(yyyyMM)、8文字(yyyyMMdd)、14文字(yyyyMMddHHmmss)
の日付文字列を作成することを想定していますが、指定の桁数以外は、エラーになります。
引数が、null ⇒ 桁数に無関係に、空文字列を返す。
引数の桁数が一致 ⇒ その値を返す。
引数の桁数が不一致 ⇒ エラー
ただし、引数の最大長は、14ケタに制限しています。
このメソッドでは、日付として成立しているかどうか(99999999など)は判定していません。
- パラメータ:
value
- 任意の日付け文字列size
- 変換したい桁数
- 戻り値:
- 数字だけで構成される文字列(例:20010417154822)(nullはゼロ文字列を返します)
- 変更履歴:
5.6.6.0 (2013/07/05) メソッドの内容を移す。 |
parseDate
public static final String parseDate(String value,
int minSize,
int maxSize)
- 日付文字列の桁数の整合性を取ります。
これは、内部で、parseNumber(String) 処理により、不要なフォーマット記号を削除します。
ここでは、基本的には、6文字(yyyyMM)、8文字(yyyyMMdd)、14文字(yyyyMMddHHmmss)
の日付文字列を作成することを想定していますが、それ以外の桁数でも下記のルールに従って
処理されます。
引数が、null ⇒ 桁数に無関係に、空文字列を返す。
引数の桁数が範囲内 ⇒ 以下の処理を実行する。
引数の桁数を同じ ⇒ そのまま返す。
引数の桁数より大きい ⇒ 余をカットして、引数の最大長にそろえる。
引数の桁数に足りない ⇒ "20000101000000" の文字列の部分文字列を結合させて、引数の最大長にそろえる。
ただし、引数の最大長は、14ケタに制限しています。
このメソッドでは、日付として成立しているかどうか(99999999など)は判定していません。
- パラメータ:
value
- 任意の日付け文字列minSize
- 変換したい桁数の最小値maxSize
- 変換したい桁数の最大値
- 戻り値:
- 数字だけで構成される文字列(例:20010417154822)(nullはゼロ文字列を返します)
- 変更履歴:
5.5.7.2 (2012/10/09) 新規作成 |
5.6.1.1 (2013/02/08) 桁数チェック導入。6桁以下だとエラーにする。 |
5.6.6.0 (2013/07/05) 桁数チェックの最小-最大指定 |
isStrict
public static final boolean isStrict(String value)
- 日付文字列の厳密な整合性チェックを行います。
ここで指定できるのは、8文字(yyyyMMdd)、14文字(yyyyMMddHHmmss)のどちらかの
数字だけの日付文字列であり、それが、日付として正しいかどうかのチェックを行います。
正しければ、true を、間違っていれば、false を返します。
ここでは、20120230(2月30日)などの日付や、20120101235960 なども false になります。
引数が、null および、空文字列の場合も、false を返しますので、避けたい場合は、事前に
判定しておいてください。
内部処理としては、DateFormat で、setLenient( false ) を設定することで、
日付/時刻解析を厳密に解析するにして、ParseException が発生しないかどうか判定しています。
- パラメータ:
value
- 数字だけで構成される日付け文字列
- 戻り値:
- true:日付として正しい場合/false:日付として間違っている場合
- 変更履歴:
5.5.7.2 (2012/10/09) 新規作成 |
getDateFormat
public static final String getDateFormat(String key,
String prmA,
String prmB)
- 日付関係の情報を簡易的に処理します。
CC引数の加減算パラメータは、0 です。
- パラメータ:
key
- フォーマットの予約語prmA
- 基準となる日付(nullの場合は、処理時刻)prmB
- 処理コマンド
- 戻り値:
- メッセージ情報
- 関連項目:
getDateFormat( String , String ,String , int )
- 変更履歴:
5.7.4.1 (2014/03/14) CC 引数を拡張するため、旧メソッドを再現しておきます。 |
getDateFormat
public static final String getDateFormat(String key,
String prmA,
String prmB,
int intC)
- 日付関係の情報を簡易的に処理します。
第一引数 "XXXX" は、日付処理を行うフォーマットの予約語になっています。
・YMD :8文字の4-2-2年月日データ(yyyyMMdd)を扱います。
・Y2MD :6文字の2-2-2年月日データ(yyMMdd)を扱います。
・YM :6文字の4-2年月データ(yyyyMM)を扱います。
・HMS :6文字の2-2-2時分秒データ(HHmmss)を扱います。
・YMDHMS :14文字の4-2-2-2-2-2年月日時分秒データ(yyyyMMddHHmmss)を扱います。
・EEE :曜日をデフォルトロケールで表示します。
F付きは、フォーマットされた日付を返します。
・YMDF :10文字の日付表現(yyyy/MM/dd)を扱います。
・Y2MDF :8文字の日付表現(yy/MM/dd)を扱います。
・YMF :7文字の日付表現(yyyy/MM)を扱います。
・HMSF :8文字の時刻表現(HH:mm:ss)を扱います。
・YMDHMSF:19文字の日付表現(yyyy/MM/dd HH:mm:ss)を扱います。
・MDF :5文字の月日表現(MM/dd)を扱います。
・MDEF :5文字+曜日の月日表現(MM/dd(EEE))を扱います。
・MD2F :和暦の月日表現(MM月dd日)を扱います。(5.5.5.2 追加)
・GYMDF :和暦の年月日表現(GGGGyyyy年MM月dd日)を扱います。
・G2YMDF :和暦の日付表現(Gyyyy/MM/dd)を扱います。
・GYMF :和暦の年月表現(GGGGyyyy年MM月)を扱います。
・GYF :和暦の年表現(GGGGyyyy)を扱います。
なお、上記以外のフォーマットを指定する場合は、XXXX部分に直接記述できます。(5.5.5.2 追加)
ただし、基本的には、自由フォーマットは、エラーチェックがない為、使わないでください。
第二引数 AA は、基準となる日付を、yyyyMMdd形式で指定します。nullの場合は、現在時刻を使用します。
指定できる日付は、yyyyMMdd形式を推奨しますが、'/' , '-' , ' ' , ':' を削除して使います。
6桁の場合は、yyyyMM + 01 とし、8ケタの場合は、yyyyMMdd とし、14ケタ以上の場合は、前半14文字を
yyyyMMddHHmmss として処理します。それ以外の桁数の場合は、エラーになります。
たとえば、"2012/09/05 16:52:36" のようなフォーマットデータの場合、'/' , '-' , ' ' , ':' を削除して
"20120905165236" に変換後、日付オブジェクトに変換されます。
第三引数 BB は、日付についての加減算処理を行うためのコマンドを指定します。
nullの場合は、なにも加減算処理を行いません。
・SD :当月の最初の日付にセットします。(当月1日)。CC引数は、-N:N月前、0:当月(=SD)、N:N月後、-1:BSD と同じ、1:ASD と同じ
・ED :当月の最後の日付にセットします。(当月月末)。CC引数は、-N:N月前、0:当月(=ED)、N:N月後、-1:BED と同じ、1:AED と同じ
・SW :日付処理の週初め(月曜日)にセットします。日付は当日より前に移動します。CC引数は、-N:N週前、0:今週(=SW)、N:N週後
・EW :日付処理の週末(日曜日)にセットします。日付は当日より後ろに移動します。CC引数は、-N:N週前、0:今週(=EW)、N:N週後
・H1 ~ HXXX :時を指定の分だけ進めます。H1なら1時間後、H24 なら24時間後(5.5.5.6 (2012/08/31) 追加)
・D1 ~ DXXX :日を指定の分だけ進めます。D1なら翌日、D200 なら200日後
・M1 ~ MXXX :月を指定の分だけ進めます。M1なら翌月、M6 なら半年後
・BSD :(有閑)先月の最初の日付にセットします。(先月1日)(5.5.5.2 追加)。SD -1 と同等
・BED :(有閑)先月の最後の日付にセットします。(先月月末)(5.5.5.2 追加)。ED -1 と同等
・ASD :(有閑)翌月の最初の日付にセットします。(翌月1日)(5.5.5.2 追加)。SD 1 と同等
・AED :(有閑)翌月の最後の日付にセットします。(翌月月末)(5.5.5.2 追加)。ED 1 と同等
CC 引数は、特別な処理で、BB 引数に対して、加算、減算のための数字を指定できます。(5.7.4.1 (2014/03/14) 追加)
従来は、BB 引数が、"H" , "D" , "M" の 1文字パラメータの場合のみ利用可能でした。
- パラメータ:
key
- フォーマットの予約語prmA
- 基準となる日付(nullの場合は、処理時刻)prmB
- 処理コマンドintC
- 加減算処理を行うための数字。0 は、BB引数の従来計算のまま。
- 戻り値:
- メッセージ情報
- 関連項目:
getDateFormat( String , String ,String )
,
AA 引数 からカレンダオブジェクトを作成します。
,
BB 引数、CC 引数を元に、日付計算します。
- 変更履歴:
5.5.7.2 (2012/10/09) 新規作成 |
5.6.1.1 (2013/02/08) prmB処理を、calendarCalc メソッドへ移動 |
5.7.4.1 (2014/03/14) CC 引数を拡張 |
calendarCalc
public static final void calendarCalc(Calendar now,
String prmB)
- 開始前設定値、または 終了後設定値の文字列から、オプション文字列を合成します。
基準となる日付に計算した結果を反映させます。
CC引数の加減算パラメータは、0 です。
- パラメータ:
now
- 基準となる日付(Calendarオブジェクト)prmB
- 処理コマンド- 変更履歴:
5.7.4.1 (2014/03/14) CC 引数を拡張するため、旧メソッドを再現しておきます。 |
calendarCalc
public static final void calendarCalc(Calendar now,
String prmB,
int intC)
- 開始前設定値、または 終了後設定値の文字列から、オプション文字列を合成します。
基準となる日付に計算した結果を反映させます。
prmB は、日付についての加減算処理を行うためのコマンドを指定します。
・SD :当月の最初の日付にセットします。(当月1日)。CC引数は、-N:N月前、0:当月(=SD)、N:N月後、-1:BSD と同じ、1:ASD と同じ
・ED :当月の最後の日付にセットします。(当月月末)。CC引数は、-N:N月前、0:当月(=ED)、N:N月後、-1:BED と同じ、1:AED と同じ
・SW :日付処理の週初め(月曜日)にセットします。日付は当日より前に移動します。CC引数は、-N:N週前、0:今週(=SW)、N:N週後
・EW :日付処理の週末(日曜日)にセットします。日付は当日より後ろに移動します。CC引数は、-N:N週前、0:今週(=EW)、N:N週後
・H1 ~ HXXX :時を指定の分だけ進めます。H1なら1時間後、H24 なら24時間後(5.5.5.6 (2012/08/31) 追加)
・D1 ~ DXXX :日を指定の分だけ進めます。D1なら翌日、D200 なら200日後
・M1 ~ MXXX :月を指定の分だけ進めます。M1なら翌月、M6 なら半年後
・BSD :先月の最初の日付にセットします。(先月1日)(5.5.5.2 追加)。SD-1 と同等
・BED :先月の最後の日付にセットします。(先月月末)(5.5.5.2 追加)。ED-1 と同等
・ASD :翌月の最初の日付にセットします。(翌月1日)(5.5.5.2 追加)。SD1 と同等
・AED :翌月の最後の日付にセットします。(翌月月末)(5.5.5.2 追加)。ED1 と同等
・数字:日を指定の分だけ進めます。D1 ~ DXXX の簡略系
CC 引数は、特別な処理で、BB 引数に対して、加算、減算のための数字を指定できます。(5.7.4.1 (2014/03/14) 追加)
HXXX,DXXX,MXXX 形式に、CC 引数を付けた場合は、XXX にさらに加算されます。
prmB に、数字を使用した場合、(コマンドでない場合)にも、CC 引数は、加算されます。
- パラメータ:
now
- 基準となる日付(Calendarオブジェクト)prmB
- 処理コマンドintC
- 加減算処理を行うための数字。0 は、BB引数の従来計算のまま。- 変更履歴:
5.6.1.1 (2013/02/08) getDateFormat( String ,String ,String ) から分離。 |
5.7.4.1 (2014/03/14) H1 ~ HXXX :時を指定の分だけ進める処理が実装されていなかった。 |
5.7.4.1 (2014/03/14) CC 引数追加 |
getCalendar
public static final Calendar getCalendar(String value)
- 指定の引数の日付け文字列より、カレンダオブジェクトを作成します。
引数は、数字以外の文字を削除した状態に変換後、処理に回します。
不要な文字を削除した状態で、8文字以上になるように指定してください。
例外的に、6文字の場合は、yyyyMM01 とみなして、"01" 文字列を付与します。
引数に null を指定すると、現在時刻のカレンダを返します。
それ以外のデータで、8ケタ以下の場合は、RuntimeException が発生します。
8ケタ以上14ケタ未満の場合は、8ケタ分を、年月日に分離したカレンダ
オブジェクトを作成します。14ケタ以上で初めて、時分秒を含むカレンダ
を作成します。
- パラメータ:
value
- 日付け文字列
- 戻り値:
- カレンダオブジェクト(引数がnullの場合は、現在時刻)
- 変更履歴:
5.5.7.2 (2012/10/09) 新規作成 |
5.5.8.2 (2012/11/09) value の判定に、null と ゼロ文字列を判定する。 |
getDatePlus
public static final String getDatePlus(String baseDate,
int plus)
- 指定の引数の日付け文字列(yyyyMMdd)より、日付を加算して返します。
マイナスを与えると、減算します。
日付以上の精度の文字列を渡しても、日付のみの計算となります。
結果は、引数の日付フォーマットとは全く別で、yyyyMMdd の8文字形式になります。
引数に null を渡すと、実行時の日付をベースとして処理します。
- パラメータ:
baseDate
- 日付け文字列(yyyyMMdd)plus
- 加算する日数(過去にするにはマイナス値を指定する)
- 戻り値:
- 結果の日付(yyyyMMdd)
- 変更履歴:
5.5.7.2 (2012/10/09) 新規作成 |
getMonthPlus
public static final String getMonthPlus(String baseDate,
int plus)
- 現在の月に、指定の月数をプラスした日付文字列を返します。
日付文字列のフォーマットは、"yyyyMM" です。
指定する月数にマイナスを指定すると、減算できます。
- パラメータ:
baseDate
- 日付け文字列(yyyyMM)plus
- 加算する月数(過去にするにはマイナス値を指定する)
- 戻り値:
- 指定の月数をプラスした日付文字列(yyyyMM)
- 変更履歴:
5.5.7.2 (2012/10/09) 新規作成 |
getDatePlus
public static final String getDatePlus(String baseDate,
String plus,
int defTani,
String format)
- 指定の引数の日付け文字列(yyyyMMdd、yyyyMMddHHmmss)に、日付を加算して返します。
マイナスを与えると、減算します。
指定する日付には、単位を付与することが可能です。
単位は、yyyyMMddHHmmss 形式の1文字を指定します。大文字、小文字も識別します。
plus="5M" とすれば、5か月、plus="5d" とすれば、5日 追加します。
plus に単位を付けない場合は、tani に指定の単位を使います。
plus そのものが、null か、isEmpty の場合は、加算は、1 になります。
baseDate 文字列を日付文字列に変換後、Calendar で計算し、結果を、format 形式に変換します。
引数に null を渡すと、実行時の日付をベースとして処理します。
- パラメータ:
baseDate
- 日付け文字列(yyyyMMdd、yyyyMMddHHmmss 形式の日付文字列)plus
- 加算する日数(日付単位を含む。単位は、y,M,d,H,m,s の文字で、大文字小文字の区別があります)defTani
- 日付単位が未指定の場合の初期単位('y','M','d','H','m','s' のどれか)format
- 返す日付文字列のフォーマット(yyyyMMdd、yyyyMMddHHmmss)
- 戻り値:
- 結果の日付(yyyyMMdd)
- 例外:
NumberFormatException
- 加算する日数の単位が('y','M','d','H','m','s')以外の場合。- 変更履歴:
5.6.1.0 (2013/02/01) 新規作成 |
Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.