データベースから
日付情報A(char長8)の文字列を取得して
日付の判定をする方法を解説します。
現場でも使用頻度が高いと思いますので
覚えておくといいでしょう。
まずデータベースから該当する
日付情報A(yyyyMMdd)を取得し
Date型に変換してから比較します。
yyyyMMddのままだと
Date型に変換できないので
フォーマットへ変更する必要があります。
StringBuilderを使用して
yyyy/MM/ddのフォーマットへ変更します。
yyyyMMddからyyyy/MM/ddへ変更後に日付の判定方法
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 47 48 |
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class ChangeDateFormat { public static void main(String[] args) throws ParseException { Date date = new Date(); String getDateA = null; SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd"); String stDate = df.format(date); Random rnd = new Random(); StringBuilder sb = new StringBuilder(); System.out.println("本日の日付は" + stDate + "です。"); for (int i = 1; i <= 5; i++) { // 乱数を生成 int num = rnd.nextInt(10); String ran = String.valueOf(num); // DBから取得してきた日付情報A(文字列yyyyMMdd)と想定 getDateA = "201" + ran + "1015"; // yyyy/MM/ddへ変更 sb.append(getDateA.substring(0, 4) + "/"); sb.append(getDateA.substring(4, 6) + "/"); sb.append(getDateA.substring(6, 8)); // Date型に変換 Date dateA = df.parse(sb.toString()); // 日付の判定 if (date.getTime() > dateA.getTime()) { System.out.println(i + "回目取得の日付情報Aは" + sb.toString() + "なので過去日になります。"); } else { System.out.println(i + "回目取得の日付情報Aは" + sb.toString() + "なので未来日になります。"); } // 内容をクリア sb.setLength(0); } } } |
実行結果
1 2 3 4 5 6 |
本日の日付は2017/10/15です。 1回目取得の日付情報Aは2010/10/15なので過去日になります。 2回目取得の日付情報Aは2012/10/15なので過去日になります。 3回目取得の日付情報Aは2019/10/15なので未来日になります。 4回目取得の日付情報Aは2010/10/15なので過去日になります。 5回目取得の日付情報Aは2018/10/15なので未来日になります。 |
SimpleDateFormatを使って
フォーマットを指定した後に、
parseメソッドでDate型に変換した内容です。
この場合、ParseExceptionが発生しますので
例外処理が必要になってきます。
多くのメモリを管理して
過負荷の可能性がある為、
使い回せるのであればループ内で
インスタンス化するのは控えてください。
yyyy
年(西暦)を出力
YYYY
「最初の木曜日を含む週が、
その年の第1週である」
というルールで年(西暦)を出力
出力例
- “yyyy/MM/dd”:(例)20117/10/14
- “HH:mm:ss”:(例)12:34:56
- “HH:mm:ss S”:(例)12:34:56 789
- “ah時m分”:(例)午後1時23分
- “E曜日”:(例)月曜日
この記事へのコメントはありません。