現場でも使用頻度が非常に高い
日付を扱ったソースについて
解説していきたいと思います。
どんなプログラム開発にも
日付は切っても切れない関係です。
また画面側に表示されなくてもバックエンドで
処理をしていることが非常に多いので
現場でも必須になってくる部分だと思います。
まず日付を扱うクラスは
大きく分けて3つに分類されます。
Dateクラス
- Javaで時刻情報を取り扱う場合い標準的に利用される
- java.util パッケージに属している
- 内部にエボックからの経過ミリ秒数をlong値で保持している
※エボックとは、基準時刻である1970年元日0時ちょうどのこと - newにて引数なしでインスタンス生成をすると、現在の日時情報が格納される
- newにてlong値を引数として渡してインスタンス生成すると、指定時刻の情報が格納される
- getTime()やsetTime()を用いて、インスタンス内にほあじするlong値を取得・設定できる
Calendarクラス
- 「年・月・日・時・分・秒」などの各情報を取り扱うにはjava.util.Calendarを用いる
- 「月」の情報を取得・設定する場合は1~12ではなく0~11で指定する
指定した日時を設定でき計算や参照など利用できる範囲が広い
SimpleDateFomatクラス
- Dateクラスが保持する日時情報を「2017/12/24」のように読みやすく変換するにはjava.text.SimpleDateFormatクラスを利用する
※上の図に記載してある各クラスの関係性を参照
String型からDate型に変換する場合は
SimpleDateFormatクラスを使用します。
SimpleDateFormatクラスは名前の通り、
文字列のフォーマットを指定して
parseメソッドでDate型に変換します。
String型からDate型に変換する方法①~try-catch~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class ChangeFromStringToDate { public static void main(String[] args) { try { String stDate = "2017/10/14 01:23:45"; System.out.println("String型 = " + stDate); Date date = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss").parse(stDate); System.out.println("Date型 = " + date); } catch (ParseException ex) { ex.printStackTrace(); } } } |
String型からDate型に変換する方法②~throws ParseException~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class ChangeFromStringToDate { public static void main(String[] args) throws ParseException { String stDate = "2017/10/14 01:23:45"; System.out.println("String型 = " + stDate); Date date = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss").parse(stDate); System.out.println("Date型 = " + date); } } |
実行結果
1 2 |
String型 = 2017/10/14 01:23:45 Date型 = Sat Oct 14 01:23:45 JST 2017 |
SimpleDateFormatを使って
フォーマットを指定した後に、
parseメソッドでDate型に変換した内容です。
この場合、ParseExceptionが発生しますので
例外処理が必要になってきます。
- ①はtry-catchを使用
- ②はスロー宣言の追加でthrows ParseExceptionを使用
※上の図に記載してある各クラスの関係性を参照
String型からDate型に変換する場合は
SimpleDateFormatクラスを使用します。
SimpleDateFormatクラスは名前の通り、
文字列のフォーマットを指定して
formatメソッドでString型に変換します。
Date型からString型に変換する方法①~try-catch~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class ChangeFromDateToString { public static void main(String[] args) { try { String stDate = "2017/10/14 01:23:45"; Date date = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss").parse(stDate); System.out.println("Date型 = " + date); String str = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date); System.out.println("String型 = " + str); } catch (ParseException ex) { ex.printStackTrace(); } } } |
Date型からString型に変換する方法②~throws ParseException~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class ChangeFromDateToString { public static void main(String[] args) throws ParseException { String stDate = "2017/10/14 01:23:45"; Date date = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss").parse(stDate); System.out.println("Date型 = " + date); String str = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date); System.out.println("String型 = " + str); } } |
実行結果
1 2 |
Date型 = Sat Oct 14 01:23:45 JST 2017 String型 = 2017-10-14 01:23:45 |
SimpleDateFormatを使って
フォーマットを指定した後に、
formatメソッドでString型に変換した内容です。
この場合も、String型→Date型の変換があり
ParseExceptionが発生しますので
例外処理が必要になってきます。
- ①はtry-catchを使用
- ②はスロー宣言の追加でthrows ParseExceptionを使用
String型からSQLのDate型に変換する場合は
”yyyy-mm-dd”のフォーマットを使用します。
valueOfメソッドでDate型に変換します。
String型からSQLのDate型に変換する方法
1 2 3 4 5 6 7 8 9 10 |
import java.sql.Date; public class ChangeFromStringToSqlDate { public static void main(String[] args){ Date sqlDate= Date.valueOf("2017-10-14"); System.out.println("SQLのDate型 = " + sqlDate); } } |
実行結果
1 |
SQLのDate型 = 2017-10-14 |
カレンダークラスは日付の操作、
計算などを扱うクラスになっています。
クラスの名前の通りCalendarと同じように
日付や曜日などが設定、
参照できるクラスです。
Calendarは私達の私生活に溶け込んでいるので
使いやすく理解もしやすいことが特徴です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.HashMap; import java.util.List; public class CalendarSample { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); int year = 2020; // 年 int month = 4 - 1; // 月( 0~11:1月~12月 ) int date = 7; // 日 cal.set(year, month, date); //個別で指定したい場合、年、月、日 //cal.set(Calendar.YEAR, year); //cal.set(Calendar.MONTH, month); //cal.set(Calendar.DATE, date); //曜日(1~7:日~土) HashMap<Integer, String> hash = new HashMap<Integer, String>(); List<String> list = new ArrayList<>(); Collections.addAll(list, "(日曜)", "(月曜)", "(火曜)", "(水曜)", "(木曜)", "(金曜)", "(土曜)"); int i = 1; for (String day : list) { hash.put(i, day); i++; } System.out.println("1:cal.setで指定した年を表示 : " + cal.get(Calendar.YEAR)); System.out.println("2:cal.setで指定した月を表示 : " + cal.get(Calendar.MONTH) + "(" + (cal.get(Calendar.MONTH) + 1) + "月)"); System.out.println("3:cal.setで指定した日付を表示 : " + cal.get(Calendar.DATE)); System.out.println("4:cal.setで指定した日付が年の何日目なのかを表示 : " + cal.get(Calendar.DAY_OF_YEAR)); System.out.println("5:cal.setで指定した日付が月の何日目なのかを表示 : " + cal.get(Calendar.DAY_OF_MONTH)); System.out.println("6:cal.setで指定した日付の曜日を表示 : " + cal.get(Calendar.DAY_OF_WEEK) + hash.get(cal.get(Calendar.DAY_OF_WEEK))); System.out.println("7:cal.setで指定した日付の曜日が月の何度目なのかを表示 : " + cal.get(Calendar.DAY_OF_WEEK_IN_MONTH)); System.out.println("8:cal.setで指定した日付が年の何週目なのかを表示 : " + cal.get(Calendar.WEEK_OF_YEAR)); System.out.println("9:cal.setで指定した日付が月の何週目なのかを表示 : " + cal.get(Calendar.WEEK_OF_MONTH)); } } |
実行結果
1 2 3 4 5 6 7 8 9 |
1:cal.setで指定した年を表示 : 2020 2:cal.setで指定した月を表示 : 3(4月) 3:cal.setで指定した日付を表示 : 7 4:cal.setで指定した日付が年の何日目なのかを表示 : 98 5:cal.setで指定した日付が月の何日目なのかを表示 : 7 6:cal.setで指定した日付の曜日を表示 : 3(火曜) 7:cal.setで指定した日付の曜日が月の何度目なのかを表示 : 1 8:cal.setで指定した日付が年の何週目なのかを表示 : 15 9:cal.setで指定した日付が月の何週目なのかを表示 : 2 |
Calendarクラスのメソッドも数多く
SimpleDateFormatクラスとの相性が抜群です。
CalendarクラスのgetTimeメソッドは
指定した書式のフォーマットで
日時を取得できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
import java.text.SimpleDateFormat; import java.util.Calendar; public class FormatChangeSample { public static void main(String[] args) { //現在のカレンダー情報を取得 Calendar cal = Calendar.getInstance(); //指定した書式フォーマットで日時を取得 SimpleDateFormat sdf = new SimpleDateFormat("1: y/M/d"); System.out.println(sdf.format(cal.getTime())); //各フォーマットに変更 sdf.applyPattern("2: yyyy/MM/dd"); System.out.println(sdf.format(cal.getTime())); sdf.applyPattern("3: yyyy/MM/dd (E)"); System.out.println(sdf.format(cal.getTime())); sdf.applyPattern("4: G yyyy年MM月dd日"); System.out.println(sdf.format(cal.getTime())); sdf.applyPattern("5: yyyy年MM月dd日 → 今年D日目"); System.out.println(sdf.format(cal.getTime())); sdf.applyPattern("6: yyyy年MM月dd日 → F回目のE曜日"); System.out.println(sdf.format(cal.getTime())); sdf.applyPattern("7: yyyy年MM月dd日 → 今年w週目"); System.out.println(sdf.format(cal.getTime())); sdf.applyPattern("8: yyyy年MM月dd日 → 今月W週目"); System.out.println(sdf.format(cal.getTime())); } } |
実行結果
1 2 3 4 5 6 7 8 |
1: 2016/4/7 2: 2016/04/07 3: 2016/04/07 (木) 4: 西暦 2016年04月07日 5: 2016年04月07日 → 今年98日目 6: 2016年04月07日 → 1回目の木曜日 7: 2016年04月07日 → 今年15週目 8: 2016年04月07日 → 今月2週目 |
日付データの扱いは使用頻度が高く
プログラムと切り離すことができません。
各パターンを習得すれば
応用することもできます。
基本的な使い方とクラス、
メソッドの詳細についても
覚えておきましょう。
今の年収に満足していますか?
同じ契約金で業務委託していても
在籍している会社によって給料が違います。
今と同じスキル・業務内容でも
年収が変わるということです。
さらに以下を考慮すると
より年収アップにつながります。
- スキルセットと需要
- 経験と実績
- 業界や地域の市場価値
- 転職時の交渉スキル
転職先の企業の給与体系や
業界の標準的な給与水準を調査し、
給与のみでなく、
福利厚生やキャリア成長の機会、
ワークライフバランスなどの要素も
総合的に考慮することが重要です。
Kindle Unlimitedは、Amazonが提供する
月額定額制の電子書籍サービスを活用します。
また、Kindle Unlimitedには、
体験版が提供されています。
体験版では、一定期間(通常は30日間)に限り、
Kindle Unlimitedのサービスを
無料で利用することができます。
1.豊富な書籍のラインナップ
Kindle Unlimitedには、幅広いジャンルの書籍が
数十万冊以上含まれています。
小説、ビジネス書、自己啓発書、
学術書、漫画など、
様々なテーマや興味に合わせて
多彩な選択肢があります。
2.サービスの内容を体験
体験版では、Kindle Unlimitedの全ての機能を使いながら、
豊富な書籍のラインナップや
読書体験を体験することができます。
自身の読書の好みや
利用頻度に合うかどうかを確認できます。
3.解約が可能
体験版期間中にKindle Unlimitedのサービスに
満足しなかった場合、
期限内に解約することができます。
その場合、追加料金はかかりません。
Kindle Unlimitedでは
さまざまなジャンルの書籍が提供されています。
ITエンジニアとしてスキルを向上させたり
新しい技術を学んだりする際に、
Kindle Unlimitedは
便利な資源となるのでおすすめです。
この記事へのコメントはありません。