EnumでDate変換Utilクラスを作る
いろいろな使い方があるEnumですが、Utilクラスを作るのにもつかえます!
ためしに日付を変換するUtilを作ってみました。
日付<>文字列を変換するときは、いろいろなフォーマットの日付を表す文字列に対応しなければならないので、フォーマットの定義(yyyyMMddみたいなの)をたくさん定義して、定義した分だけ同じよう名メソッドを作らなければなりません。。
ですが、Enumを使えばすっきりかけます~。
以下コードです。
DateUtil.java
package util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
// TODO: 自動生成された Javadoc
/**
* The Enum DateUtil.
*/
public enum DateUtil {
// ------------------------------
// 変換したいフォーマットを追加(start)
// ------------------------------
/** The YYYYMMDD. */
YYYYMMDD("yyyy/MM/dd"),
/** The YYYYMMDDHHMM. */
YYYYMMDDHHMM("yyyy/MM/dd hh:mm"),
/** The YYYYMMDDHHMMSS. */
YYYYMMDDHHMMSS("yyyy/MM/dd HH:mm.ss"),
/** The YYYYMMDDHHMMSSSSS. */
YYYYMMDDHHMMSSSSS("yyyy/MM/dd HH:mm.ss.SSS"),
/** The Jp_ yyyymmdd. */
JP_YYYYMMDD("yyyy年MM月dd日"),
/** The Jp_ yyyymmddhhmm. */
JP_YYYYMMDDHHMM("yyyy年MM月dd日HH時mm分"),
/** The Jp_ yyyymmddhhmmss. */
JP_YYYYMMDDHHMMSS("yyyy年MM月dd日HH時mm分ss秒");
// ------------------------------
// 変換したいフォーマットを追加(end)
// ------------------------------
/** The format. */
private String format;
/**
* Instantiates a new date util.
*
* @param format
* the format
*/
private DateUtil(String format) {
this.format = format;
}
/**
* To date.
*
* @param dateString
* the date string
* @return the date
*/
public Date toDate(String dateString) {
try {
return new SimpleDateFormat(format).parse(dateString);
} catch (ParseException e) {
// RuntimeExceptionでラップしてしまっていますが、システム共通Exceptionを投げるようにする方がいいと思います。
// 場合によって使い分けてください。
throw new RuntimeException("文字列→Dateへの変換に失敗しました(format:" + format
+ ",string:" + dateString + ")", e);
}
}
/**
* To string.
*
* @param date
* the date
* @return the string
*/
public String toString(Date date) {
return new SimpleDateFormat(format).format(date);
}
}
Main.java
package util;
import java.util.Date;
public class Main {
public static void main(String[] args) {
System.out.println("YYYYMMDD.toDate:"
+ DateUtil.YYYYMMDD.toDate("2012/1/29"));
System.out.println("YYYYMMDDHHMM.toDate:"
+ DateUtil.YYYYMMDDHHMM.toDate("2012/1/29 1:5"));
System.out.println("YYYYMMDDHHMMSS.toDate:"
+ DateUtil.YYYYMMDDHHMMSS.toDate("2012/1/29 1:5.7"));
System.out.println("YYYYMMDDHHMMSSSSS.toDate:"
+ DateUtil.YYYYMMDDHHMMSSSSS.toDate("2012/1/29 1:5.7.100"));
System.out.println("JP_YYYYMMDD.toDate:"
+ DateUtil.JP_YYYYMMDD.toDate("2012年1月29日"));
System.out.println("JP_YYYYMMDDHHMM.toDate:"
+ DateUtil.JP_YYYYMMDDHHMM.toDate("2012年1月29日1時5分"));
System.out.println("JP_YYYYMMDDHHMMSS.toDate:"
+ DateUtil.JP_YYYYMMDDHHMMSS.toDate("2012年1月29日1時5分7秒"));
System.out.println("------------------------------");
System.out.println(DateUtil.YYYYMMDD.toString(new Date()));
System.out.println(DateUtil.YYYYMMDDHHMM.toString(new Date()));
System.out.println(DateUtil.YYYYMMDDHHMMSS.toString(new Date()));
System.out.println(DateUtil.YYYYMMDDHHMMSSSSS.toString(new Date()));
System.out.println(DateUtil.JP_YYYYMMDD.toString(new Date()));
System.out.println(DateUtil.JP_YYYYMMDDHHMM.toString(new Date()));
System.out.println(DateUtil.JP_YYYYMMDDHHMMSS.toString(new Date()));
}
}
実行結果
YYYYMMDD.toDate:Sun Jan 29 00:00:00 JST 2012
YYYYMMDDHHMM.toDate:Sun Jan 29 01:05:00 JST 2012
YYYYMMDDHHMMSS.toDate:Sun Jan 29 01:05:07 JST 2012
YYYYMMDDHHMMSSSSS.toDate:Sun Jan 29 01:05:07 JST 2012
JP_YYYYMMDD.toDate:Sun Jan 29 00:00:00 JST 2012
JP_YYYYMMDDHHMM.toDate:Sun Jan 29 01:05:00 JST 2012
JP_YYYYMMDDHHMMSS.toDate:Sun Jan 29 01:05:07 JST 2012
------------------------------
2012/01/29
2012/01/29 06:27
2012/01/29 18:27.51
2012/01/29 18:27.51.073
2012年01月29日
2012年01月29日18時27分
2012年01月29日18時27分51秒
まぁこんな感じです。
DateUtilクラスでは、フォーマットを定義をして、Date<>Stringのメソッドを共通的に実装してます!
フォーマットごとにDate<>String変換メソッドを実装しなくてすむので、楽です~
※サンプルでは、toDateメソッドにて、ParseExceptionをRuntimeExceptionにラップしてしまっているので、使うときは、システムで使用しているExceptionにラップして使うようにしてください!
0 Response to "EnumでDate変換Utilクラスを作る"
コメントを投稿