『この橋はな― 人呼んでなみだ橋という いわく…人生にやぶれ 生活につかれはててドヤ街に流れてきた人間たちが なみだでわたるかなしい橋だからよ 三年ほど前のわしもそうだった おめえもその ひとりだったはずだ… だが こんどはわしとおまえでこのなみだ橋を逆にわたり あしたの栄光めざして 第一歩をふみだしたいと思う わかるか わしのいうてる意味が… ああ?わしのいうてる意味がわかるかよジョー!』
どうもボクです。
あしたのジョー 文庫版 コミック 全12巻完結セット (講談社漫画文庫)
あしたのジョーの「丹下段平」の名台詞が出たところで、あしたのJavaーってことで、明日のために、打つべし!打つべし!打つべし!何を?
プログラミングでしょうが!
すみません、取り乱しました...
というわけで、Javaで日付の判定が必要ということになりまして、日付判定してみました。
今回、Javaの記事が100回目ですが、ありふれた話になっちまいやした、面目ない。
そして、ようやっと、Javaの実務経験が、1年少し(開発経験も同じく)付いたという、多少は転職活動がしやすくなったということですかね、スキルが上がってない気がしますが...。まぁ、3年ぐらい開発経験があれば尚良いんですがね...こればっかりはどうしようもないと...
そんでは、Javaの話、レッツ~トライ。
Javaで日付判定、つまりyyyyMMddで比較
というわけで、yyyyMMddhhmmsssとかのフォーマットから、yyyyMMddに変換してからの比較、細かいことなんて気にしたらいかんぜよ!という気持ちで、hhmmsss部分に関しては切り捨てます、間違ってるかも知らんけど正解が分からんので。
Eclipseを起動し、適当なクラスを作成します。
んで、ソースはこんな感じ。
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("翌日"); } } }
んで、実行してみます。
⇧ 取引日付が、「20190204」だと、前日以降になりましたね。
⇧ 取引日付が、「20190207」だと、当日になりましたね。
⇧ 取引日付が、「20190214」だと、翌日以降になりましたね。
というわけで、比較はできたということですかね。あくまで、日本基準での比較ということで。時差とか考えると、他の国では日付変わってきそうですもんね。そのへんって考慮したほうが良いんですかね?
そして、Javaの日付のAPIが多過ぎて、どれを使って良いものやら分からなくなりますね...
毎回、哀しいぐらいに成長が見られませんですな...
今回はこのへんで。