どのプログラムでも必須となる日付け処理。
言語が違うといろいろと面倒です。
とりあえず頻出のものを整理したいと思います。
現在時刻の出力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class Sample { public static void main(String[] args) { //現在の日付けを取得(その1 date) Date date1 = new Date(); System.out.println(date1.toString()); //Mon Jun 01 23:44:12 JST 2015 //現在の日付けを取得(その2 caledar) //dateよりも細かくset,getをすることが可能 //タイムゾーン設定も可能 Calendar cal = Calendar.getInstance(Locale.JAPAN); Date date2 = cal.getTime(); System.out.println(date2.toString()); //Mon Jun 01 23:44:12 JST 2015 } } |
日付けの設定・取得
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class Sample { public static void main(String[] args) { //日付けの設定・取得 Calendar cal = Calendar.getInstance(Locale.JAPAN); //年月日時分秒の設定 cal.set(1980, Calendar.JULY, 13, 11, 32, 25); Date date1 = cal.getTime(); System.out.println(date1.toString()); //Sun Jul 13 11:32:25 JST 1980 //個別設定も可能 Calendar cal2 = Calendar.getInstance(); cal2.set(Calendar.YEAR, 1980); cal2.set(Calendar.MONTH, Calendar.JANUARY); //取得(月はプラス1する) int month1 = cal2.get(Calendar.MONTH) + 1; System.out.println(month1); //1 } } |
日付けの整形
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class Sample { public static void main(String[] args) { //日付の出力 DateFormat df1 = new SimpleDateFormat("yyyyMMdd HHmmss.sss"); Date date1 = new Date(); System.out.println(df1.format(date1)); //20150602 000523.023 DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd"); Calendar cal = Calendar.getInstance(); cal.set(1980, Calendar.MAY, 13); Date date2 = cal.getTime(); System.out.println(df2.format(date2)); //1980/05/13 } } |
文字列からDateへの変換
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class Sample { public static void main(String[] args) { //文字列からDateへの変換 DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); try { Date date1 = df.parse("2007/11/24"); } catch (ParseException ex) { Logger.getLogger(Sample.class.getName()).log(Level.SEVERE, null, ex); } } } |
日付けの加算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public class Sample { public static void main(String[] args) { //文字列からDateへの変換 Calendar cal = Calendar.getInstance(); //現在時刻に一ヶ月プラスする cal.add(Calendar.DATE, 1); Date date1 = cal.getTime(); System.out.println(date1.toString()); //Wed Jun 03 00:16:31 JST 2015 Calendar cal2 = Calendar.getInstance(); cal2.set(1980, Calendar.MAY, 13); //加算できる(マイナスもOK) cal2.add(Calendar.YEAR, 15); Date date2 = cal2.getTime(); System.out.println(date2.toString()); //Sat May 13 00:16:31 JST 1995 } } |
おまけ
現在時刻をyyyymmdd形式でマイクロ秒まで出すメソッドがありましたので書かせていただきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public static void main(String[] args) { Calendar c = Calendar.getInstance(); //nano秒の取得 long nanos = System.nanoTime(); //ナノ→マイクロへの変換 long micro = TimeUnit.NANOSECONDS.toMicros(nanos); //ナノ→秒への変換(マイクロと比較するために10^6をかける) long seconds = TimeUnit.NANOSECONDS.toSeconds(nanos)*1000000; //マイクロ秒-秒をとりマイクロ秒だけを切り出す。 long mirco2 = micro-seconds; //現在時刻をyyyyMMddhhmmssでとる SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss"); //yyyyMMddhhmmssとマイクロ秒を結合 String dateFormatMicro = sdf.format(c.getTime()) + mirco2; System.out.print(dateFormatMicro); } |