【问题标题】:How to generate N number of weeks from the date given - java如何从给定日期生成 N 周 - java
【发布时间】:2015-10-01 14:20:06
【问题描述】:

我正在尝试从给定日期创建N 周,并且周列表应排除属于该周的周。

例如,如果我给出今天的日期,那么我想将不包括本周的周生成为 N 周数。

以下是满足我目的的示例,但我无法创建 N 周数,这段代码也打印当前周。

Calendar currentDate = Calendar.getInstance(Locale.US);
int firstDayOfWeek = currentDate.getFirstDayOfWeek();

Calendar startDate = Calendar.getInstance(Locale.US);
startDate.setTime(currentDate.getTime());

int days = (startDate.get(Calendar.DAY_OF_WEEK) + 7 - firstDayOfWeek) % 7;
startDate.add(Calendar.DATE, -days);

Calendar endDate = Calendar.getInstance(Locale.US);
endDate.setTime(startDate.getTime());
endDate.add(Calendar.DATE, 6);

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(df.format(startDate.getTime()) + " - " + df.format(endDate.getTime())); 

有人可以帮我解决这个问题吗?

【问题讨论】:

标签: java date weekday


【解决方案1】:

从给定日期打印 N 周[不包括当前周]:

public static void printNWeeks(Calendar startDate, int weeks) {

    int firstDayOfWeek = startDate.getFirstDayOfWeek();
    int days = (startDate.get(Calendar.DAY_OF_WEEK) + 7 - firstDayOfWeek) % 7;
    startDate.add(Calendar.DATE, -days);

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

    for (int i = 1; i <= weeks; i++) {

        startDate.add(Calendar.DATE, 7); // change to 7 to -7 for back dates

        Calendar endDate = Calendar.getInstance(Locale.US);
        endDate.setTime(startDate.getTime());
        endDate.add(Calendar.DATE, 6);          

        System.out.println(df.format(startDate.getTime()) + " - "
                + df.format(endDate.getTime()));
    }
}

示例调用:

public static void main(String[] args) {        

   //From the given date
    Calendar startDate = Calendar.getInstance(Locale.US);
    startDate.set(2015, Calendar.JANUARY, 30);
    printNWeeks(startDate, 5);

    //From Current Date     
    startDate = Calendar.getInstance(Locale.US);
    printNWeeks(startDate, 5);
}

【讨论】:

    猜你喜欢
    • 2016-04-08
    • 2022-10-23
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    相关资源
    最近更新 更多