Flutter(Dart), 直近の過去の日曜日の日付を求めるコード

1,はじめに

Fluter/Dartでアプリを作っている最中に、

システム日付から直近(過去)の日曜日の日付を求める処理を作成しました。

システム日付から一番近い特定の曜日の日付を求める場合など、

Dartでの日付処理に応用ができるコードのため、

共有させていただきます。

2,コード

実装は下記のとおりです。

import 'package:intl/date_symbol_data_local.dart';
import 'package:intl/intl.dart';

// 直近の日曜日の日付を算出し、その日付を返す
DateTime getLastSundayDataTime() {
    initializeDateFormatting('ja');
    DateTime dResult = DateTime.now();

    // 当日が日曜日ではないならば、
    // 直前の日曜日まで日付を戻していく
    if (dResult.weekday != DateTime.sunday) {
        for (int i = 0; i < 7; ++i) {
            dResult = dResult.subtract(Duration(days : 1));
            // 直近の未来の日曜日を求めたい場合は、下記のようにします。
            // dResult = dResult.add(Duration(days : 1));

            if (dResult.weekday == DateTime.sunday) {
                break;
            }
        }
    }

    return (dResult);
}


// 直近の日曜日の日付を算出し、その日付を返す
String getLastSundayString() {
    String ret = "";
    // 計算結果を文字列にする
    ret = (DateFormat('yyyy/MM/dd').format(getLastSundayDataTime())).toString();
    return (ret);
}

解説としては、日付の減算処理にて1日を指定することで、

直近の過去の日曜日の日付を求めています。

日付処理のライブラリを使用しているため「pubspec.yaml」には下記を追記してください。

dependencies:
  flutter:
    sdk: flutter

  # https://flutter.keicode.com/dart/intl-datetime.php
  intl: ^0.15.7

以上です。

3,参考文献

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA