Java中获取本周内所有日期

Python017

Java中获取本周内所有日期,第1张

import java.text.SimpleDateFormat

import java.util.Calendar

public class DataTest {

public static void main(String[] args) {

printWeekdays()

}

private static final int FIRST_DAY = Calendar.MONDAY

private static void printWeekdays() {

Calendar calendar = Calendar.getInstance()

setToFirstDay(calendar)

for (int i = 0 i < 7 i++) {

printDay(calendar)

calendar.add(Calendar.DATE, 1)

}

}

private static void setToFirstDay(Calendar calendar) {

while (calendar.get(Calendar.DAY_OF_WEEK) != FIRST_DAY) {

calendar.add(Calendar.DATE, -1)

}

}

private static void printDay(Calendar calendar) {

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd EE")

System.out.println(dateFormat.format(calendar.getTime()))

}

}

/**

     * 获取上周五时间

     */

    public Date lastFirday() {

//作用防止周日得到本周日期

        Calendar calendar = Calendar.getInstance()

        while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {

            calendar.add(Calendar.DAY_OF_WEEK, -1)

        }

        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1

        int offset = 7 - dayOfWeek

        calendar.add(Calendar.DATE, offset - 9)

        return DateTimeUtil.getFirstDayOfWeek(calendar.getTime(), 6)//这是从上周日开始数的到本周五为6

    }

 

/**

     * 获取上周一时间

     */

    public Date lastMonday() {

        Calendar calendar = Calendar.getInstance()

        while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {

            calendar.add(Calendar.DAY_OF_WEEK, -1)

        }

        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1

        int offset = 1 - dayOfWeek

        calendar.add(Calendar.DATE, offset - 7)

        return DateTimeUtil.getFirstDayOfWeek(calendar.getTime(), 2)

    }

参考

请采纳,谢谢

思路:首先是获取该月的实际天数,然后从1号遍历直至该月最后一天,利用Calendar类找出该日是一周中的第几天,

(1)若该日是周日,则视为一周结束,并用该日期减去6找到该周的开始日期,若相减结果小于等于1,则说明该周起始日期应该是本月1号。

(1)若该日不是周日,且是该月最后一天,则应该在上面计算的基础上再加一周,视月末为该周的结束日,该周起始日期应为改日期减去改日

在一周中的位置加2,例如:2013-09-30号是周一,则视为9月份中的第六周,开始日期是30-2+2

提示:Calendar 类中视周日为一周的开始,值是1

示例代码:

[java] view plain copy

public static void printfWeeks(String date) throws Exception {

// String date = "2013-09"

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM")

Date date1 = dateFormat.parse(date)

Calendar calendar = new GregorianCalendar()

calendar.setTime(date1)

int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH)

System.out.println("days:" + days)

int count = 0

for (int i = 1i <= daysi++) {

DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd")

Date date2 = dateFormat1.parse(date + "-" + i)

calendar.clear()

calendar.setTime(date2)

int k = new Integer(calendar.get(Calendar.DAY_OF_WEEK))

if (k == 1) {// 若当天是周日

count++

System.out.println("-----------------------------------")

System.out.println("第" + count + "周")

if (i - 6 <= 1) {

System.out.println("本周开始日期:" + date + "-" + 1)

} else {

System.out.println("本周开始日期:" + date + "-" + (i - 6))

}

System.out.println("本周结束日期:" + date + "-" + i)

System.out.println("-----------------------------------")

}

if (k != 1 &&i == days) {// 若是本月最好一天,且不是周日

count++

System.out.println("-----------------------------------")

System.out.println("第" + count + "周")

System.out.println("本周开始日期:" + date + "-" + (i - k + 2))

System.out.println("本周结束日期:" + date + "-" + i)

System.out.println("-----------------------------------")

}

}

}

测试代码:

[java] view plain copy

public static void main(String[] args) throws Exception {

String s = "2013-"

for (int i = 1i <= 12i++) {

System.out.println("*******************************************")

System.out.println("月份:" + i)

printfWeeks(s + i)

System.out.println("*******************************************")

}

//printfWeeks(s + 2)

}