Hatena::Groupprogram

ひとり開発日記。 このページをアンテナに追加 RSSフィード

2017/02/11 (Sat)

今週の月曜日

|  今週の月曜日 - ひとり開発日記。 を含むブックマーク はてなブックマーク -  今週の月曜日 - ひとり開発日記。

「2017/01/01は日曜日なので、"今週の月曜日"なら2017/01/02になりますよ」ってコメントしようと思ったのですが、どうにもこうにもクソリプっぽかったので、自分の日記に書きます。

解決策として、「今日が日曜日なら本日、そうでないなら前の日曜日に戻る」→「次の月曜日を求める」で、2017/01/01週の月曜日を求めると、Java8だと、日時APIを使用して、以下のようにするのがいいのですかね。

package test;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

import java.time.DayOfWeek;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;

import org.junit.Test;

public class ThisMondayTest {
    @Test
    public void testThisMonday() {
        String date = ZonedDateTime.of(2017, 1, 1, 0, 0, 0, 0, ZoneId.of("Asia/Tokyo"))
                .with(TemporalAdjusters.previousOrSame(DayOfWeek.SUNDAY))
                .with(TemporalAdjusters.next(DayOfWeek.MONDAY))
                .format(DateTimeFormatter.ISO_LOCAL_DATE);
        assertThat(date, is("2017-01-02"));
    }
}

このAPIGroovyを使って書き直せばいいのではないでしょうか。*1

*1:すみません、Groovy全然分からないんですよね。 Gradleも触ったこと無いくらいなので…。

トラックバック - http://program.g.hatena.ne.jp/halflite/20170211