" />

スポンサーリンク

開発

開発案件における日付のうまい扱い方(Date?LocalDate?LocalDateTime?フォーマットは?)

投稿日:

日付を扱うクラスはLocalDateTimeかLocalDate(時刻不要の場合)を使う。

現在時刻から作成するには?

LocalDateTime now = LocalDateTime.now();
LocalDate now1 = LocalDate.now();

Date型やSimpleDateFormatは使わない。使用禁止。

プレゼンテーション層(@Controller層)~サービス層(@Service)~インテグレーション層(@Dao/@Repository)まで、すべてLocalDateTimeかLocalDateで日付は扱うようにする。

変数で受け渡していくとき、Stringは絶対使わない。複数層にまたがるとすぐに分からなくなる。LocalDateTime、LocalDateで扱うようにする。

フォーマットするとき

LocalDateTime#formatに事前定義したDateTimeFormatterのパターンを渡すようにする。ここでもStringを各機能担当者に書かせないようにするのがポイント。

システム内で扱うフォーマットはこれだけですよとDateUtilクラスを作ってそこに事前に定義しておく。

スラッシュを使いたいシーンになったら、使いたい時に、使い方時だけフォーマットするようにする。

そうすると、開発者の開発体験は上がる。

日時のユーティリティはこれだけでいける

package com.example.sampleprojectapi.utilities;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * 現在日時の取得と、システム内で扱う日付フォーマットを定義する.
 */
public class DateUtil {

    /** 現在日時を取得する */
    public static LocalDateTime getCurrentDateTime() {
        return LocalDateTime.now();
    }

    /** 現在日付を取得する */
    public static LocalDate getCurrentDate() {
        return LocalDate.now();
    }

    /** 日付フォーマットは下記を使用する */
    public static DateTimeFormatter ymdHyphen = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    public static DateTimeFormatter ymdSlash = DateTimeFormatter.ofPattern("yyyy/MM/dd");
    public static DateTimeFormatter ymdHmHyphen = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm");
    public static DateTimeFormatter ymdHmSlash = DateTimeFormatter.ofPattern("yyyy/MM/dd hh:mm");
    public static DateTimeFormatter ymdHmsHyphen = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
    public static DateTimeFormatter ymdHmsSlash = DateTimeFormatter.ofPattern("yyyy/MM/dd hh:mm:ss");
}

HTTPリクエストを受け取るときとDBから値を取得するときに、LocalDateTime または LocalDate で受け取るようにしておく。
現在日時を処理内で取得するときは、上記のDateUtil#getCurrentDateTimeを使用する。

あとは表示のときのフォーマットだけ定義してあげれば、LocalDateTime.format(DateUtil.ymdSlash)の要領で書ける。

日付の比較なんかもLocalDateTime#isAfter や LocalDateTime#isBeforeがそのまま使えるため、コードの見通しもよくなる。

ポイントはやはり極力、LocalDateTime または LocalDateを使うようにすること。

スポンサーリンク

-開発

Copyright© ノリックジオグラフィック for Webエンジニア , 2022 All Rights Reserved Powered by AFFINGER5.