java - 日历周日至周日

标签 java

我正在尝试预订从周日到下周日的 8 天航类。

我现在实现它的方式是显示从表单中所选日期开始的 7 天。

// set up calendar for sunday
Calendar sunday = Calendar.getInstance();
sunday.setTime(form.getDate());
sunday.add(Calendar.DAY_OF_WEEK, -1 * (sunday.get(Calendar.DAY_OF_WEEK) - 1));

//set up calendar for next saturday
Calendar saturday = Calendar.getInstance();
saturday.setTime(sunday.getTime());
saturday.add(Calendar.DAY_OF_WEEK, 7);

由于 DAY_OF_WEEK 的最大值为 7,我需要使用什么来代替? 我尝试更改这一行:

saturday.add(Calendar.DAY_OF_WEEK, 7);

到以下一个:

saturday.add(Calendar.DATE, 8);

我已经尝试过一些更改,但没有成功。 有什么建议吗?

最佳答案

尝试使用Calendar.DAY_OF_YEAR

import java.text.*;
import java.util.*;

DateFormat dateFormat = new SimpleDateFormat("EEE, MMM dd, yyyy hh:mm:ss a z");
Calendar sunday = new GregorianCalendar();

sunday.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); // Set day of week to Sunday.

System.out.println(dateFormat.format(sunday.getTime()));

sunday.add(Calendar.DAY_OF_YEAR, 7); // Add seven days.

System.out.println(dateFormat.format(sunday.getTime()));

输出

Sun, Dec 04, 2016 11:47:32 PM EST
Sun, Dec 11, 2016 11:47:32 PM EST

您可以通过制作副本来创建新的日历对象,而无需修改现有日历对象。

import java.text.*;
import java.util.*;

public class CalendarUtils {
    public static void main(String[] args) {
        Calendar sunday = CalendarUtils.getThisSundaysDate();
        Calendar saturday = CalendarUtils.daysFrom(sunday, 6);

        CalendarUtils.printDates(sunday, saturday);
    }

    public static Calendar getThisSundaysDate() {
        Calendar sunday = new GregorianCalendar();
        sunday.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        return sunday;
    }

    public static Calendar daysFrom(Calendar cal, int days) {
        Calendar newCal = copyCalendar(cal);
        newCal.add(Calendar.DAY_OF_YEAR, days);
        return newCal;
    }

    public static Calendar copyCalendar(Calendar cal) {
        Calendar copy = new GregorianCalendar();
        copy.setTime(cal.getTime());
        return copy;
    }

    public static void printDates(Calendar from, Calendar to) {
        DateFormat dateFormat = new SimpleDateFormat("EEE, MMMM dd, yyyy hh:mm:ss a z");

        System.out.println(dateFormat.format(from.getTime()));
        System.out.println(dateFormat.format(to.getTime()));
    }
}

关于java - 日历周日至周日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40979082/

相关文章:

java - getSerializable 根据应用程序的退出方式返回不同的类型

java - Kotlin Android/Java 字符串日期时间格式,API21

java - 防止后台Activity被杀死?

java - 项目看不到 XML 目录

java - MQTT Java将所有订阅消息放在同一个队列中

Java Swing 小程序 : How to slow or delay paint() without slowing down the entire program

java - fragment 之间通信的正确方式

java - 如何在 Java 中使用 Cucumber DataTable 匹配包含 ("${") 的参数值

java - 使用 Thymeleaf 发布具有多对一关系的数据

java - 实现Clonable接口(interface),但不必重写clone()方法