Java 当日と前日の境目は...、明日はどっちだ~な気分で日付判定

『この橋はな― 人呼んでなみだ橋という いわく…人生にやぶれ 生活につかれはててドヤ街に流れてきた人間たちが なみだでわたるかなしい橋だからよ 三年ほど前のわしもそうだった おめえもその ひとりだったはずだ… だが こんどはわしとおまえでこのなみだ橋を逆にわたり あしたの栄光めざして 第一歩をふみだしたいと思う わかるか わしのいうてる意味が… ああ?わしのいうてる意味がわかるかよジョー!』

どうもボクです。


あしたのジョー 文庫版 コミック 全12巻完結セット (講談社漫画文庫)

あしたのジョーの「丹下段平」の名台詞が出たところで、あしたのJavaーってことで、明日のために、打つべし!打つべし!打つべし!何を?

プログラミングでしょうが!

すみません、取り乱しました...

 

というわけで、Javaで日付の判定が必要ということになりまして、日付判定してみました。

今回、Javaの記事が100回目ですが、ありふれた話になっちまいやした、面目ない。

そして、ようやっと、Javaの実務経験が、1年少し(開発経験も同じく)付いたという、多少は転職活動がしやすくなったということですかね、スキルが上がってない気がしますが...。まぁ、3年ぐらい開発経験があれば尚良いんですがね...こればっかりはどうしようもないと...

そんでは、Javaの話、レッツ~トライ。

 

Javaで日付判定、つまりyyyyMMddで比較

というわけで、yyyyMMddhhmmsssとかのフォーマットから、yyyyMMddに変換してからの比較、細かいことなんて気にしたらいかんぜよ!という気持ちで、hhmmsss部分に関しては切り捨てます、間違ってるかも知らんけど正解が分からんので。

 

Eclipseを起動し、適当なクラスを作成します。

f:id:ts0818:20190207220136p:plain

んで、ソースはこんな感じ。

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;

public class TestDay {

  public static void main(String[] args) throws ParseException {

    // 取引日時(yyyyMMddhhmmsss)
    String day = "201902041206300";
    String pattern = "yyyyMMddhhmmsss";
// データベースとかのデータって、おそらくTimestamp型っぽいので Timestamp timestamp = new Timestamp(new SimpleDateFormat(pattern).parse(day).getTime()); // 取引日時を、yyyyMMdd形式に LocalDate tradeDate = timestamp.toLocalDateTime().toLocalDate(); // システム日付(現在日付)をyyyyMMdd形式に LocalDate systemDate = new Timestamp(System.currentTimeMillis()).toLocalDateTime().toLocalDate(); // 日付の比較 // 当日(現在日付と取引日付が同じ)の場合 ← 当日のお買い上げ if (systemDate.isEqual(tradeDate)) { System.out.println("現在日付" + systemDate + " = " + "取引日付" + tradeDate); System.out.println("当日"); // 前日(現在日付より取引日付が前)の場合 ← 前日のお買い上げ } else if (systemDate.isAfter(tradeDate)) { System.out.println("現在日付" + systemDate + " < " + "取引日付" + tradeDate); System.out.println("前日"); // 翌日(現在日付より取引日付が後)の場合 ← 予約とか? } else if (systemDate.isBefore(tradeDate)) { System.out.println("現在日付" + systemDate + " > " + "取引日付" + tradeDate); System.out.println("翌日"); } } }

んで、実行してみます。

f:id:ts0818:20190207220711p:plain

f:id:ts0818:20190207220926p:plain

⇧  取引日付が、「20190204」だと、前日以降になりましたね。

f:id:ts0818:20190207220844p:plain⇧  取引日付が、「20190207」だと、当日になりましたね。

f:id:ts0818:20190207222322p:plain

⇧  取引日付が、「20190214」だと、翌日以降になりましたね。

 

というわけで、比較はできたということですかね。あくまで、日本基準での比較ということで。時差とか考えると、他の国では日付変わってきそうですもんね。そのへんって考慮したほうが良いんですかね?

そして、Javaの日付のAPIが多過ぎて、どれを使って良いものやら分からなくなりますね...

 

毎回、哀しいぐらいに成長が見られませんですな...

今回はこのへんで。