java获取本周所有日期,和本周第一天和最后一天,和上周所有日期,和上周第一天和上周最后一天

java获取本周所有日期,和本周第一天和最后一天,和上周所有日期,和上周第一天和上周最后一天,第1张

import javatextSimpleDateFormat;import javautilCalendar;import javautilDate;public class Main {private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");public static void main(String args[]) {Date d = new Date();// 月初Systemoutprintln("月初" + sdfformat(getMonthStart(d)));// 月末Systemoutprintln("月末" + sdfformat(getMonthEnd(d)));Date date = getMonthStart(d);Date monthEnd = getMonthEnd(d);while (!dateafter(monthEnd)) {Systemoutprintln(sdfformat(date));date = getNext(date);}}private static Date getMonthStart(Date date) {Calendar calendar = CalendargetInstance();calendarsetTime(date);int index = calendarget(CalendarDAY_OF_MONTH);calendaradd(CalendarDATE, (1 - index));return calendargetTime();}private static Date getMonthEnd(Date date) {Calendar calendar = CalendargetInstance();calendarsetTime(date);calendaradd(CalendarMONTH, 1);int index = calendarget(CalendarDAY_OF_MONTH);calendaradd(CalendarDATE, (-index));return calendargetTime();}private static Date getNext(Date date) {Calendar calendar = CalendargetInstance();calendarsetTime(date);calendaradd(CalendarDATE, 1);return calendargetTime();}} 这是一个月的你改改就能写出上个月的了吧

public static void main(String[] args) {

Calendar calendar1 = CalendargetInstance();

Calendar calendar2 = CalendargetInstance();

int dayOfWeek=calendar1get(CalendarDAY_OF_WEEK)-1;

int offset1=1-dayOfWeek;

int offset2=7-dayOfWeek;

calendar1add(CalendarDATE, offset1-7);

calendar2add(CalendarDATE, offset2-7);

Systemoutprintln(calendar1getTime());//last Monday

Systemoutprintln(calendar2getTime());//last Sunday

}

Calendar c = CalendargetInstance();

Systemoutprintln(cgetTime());

cset(CalendarYEAR, 2014);

cset(CalendarMONTH, CalendarDECEMBER);

cset(CalendarDATE, 29);

Systemoutprintln(cgetTime());

cset(CalendarDATE,35);

Systemoutprintln(cgetTime());

是这个意思吗?

提倡了一下中文写,

static public void main(String 参数[]){

SimpleDateFormat 格式=new SimpleDateFormat("y年M月d日 E H时m分s秒",LocaleCHINA);

Calendar 日历=CalendargetInstance(LocaleCHINA);

//当前时间,貌似多余,其实是为了所有可能的系统一致

日历setTimeInMillis(SystemcurrentTimeMillis());

Systemoutprintln("当前时间:"+格式format(日历getTime()));

日历set(CalendarDAY_OF_WEEK, CalendarMONDAY);

Systemoutprintln("周一时间:"+格式format(日历getTime()));

}

===========

改到后天测了一下

输出

当前时间:2011年8月31日 星期三 12时32分40秒

周一时间:2011年8月29日 星期一 12时32分40秒

package comrxlamozhidao;

import javatextSimpleDateFormat;

import javautilCalendar;

public class Test {

    public static void main(String[] args) {

        // 获取离当前日期最近的一个星期天

        getLastSunday();

    }

    /

      获取离当前日期最近的一个星期天

     /

    public static void getLastSunday() {

        // 获取当前日期

        Calendar calendar = CalendargetInstance();

        // 距离上个周日的差值

        long diffTime = 0L;

        // 今天星期几,注:此处周日 = 1 ,周一 = 2 。。。。

        int dayOfWeek = calendarget(CalendarDAY_OF_WEEK);

        Systemoutprintln("toady:" + dayOfWeek);

        // 如果今天是周日,看需求,是取今天的,还是取上周

        if (dayOfWeek == 1){

            // 取今天

             // dayOfWeek = 1;

            // 取上周

            dayOfWeek = 8;

        }

        // 计算当前时间距离上周日的时差,此处一周的开始从周日算起,根据需要

        diffTime = (dayOfWeek - 1 )  24  60  60  1000;

        calendarsetTimeInMillis(SystemcurrentTimeMillis() - diffTime);

        //

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Systemoutprintln("lastSunday:" + dateFormatformat(calendargetTime()));

        // 如果一周的开始从周一计算,并且请注释掉上面的  if (dayOfWeek == 1) 处判断,需要重新判断

        if (dayOfWeek == 1){

            // 取今天

            // dayOfWeek = 0;

            // 取上周

            dayOfWeek = 7;

        }

        diffTime = dayOfWeek  24  60  60  1000;

        calendarsetTimeInMillis(SystemcurrentTimeMillis() - diffTime);

        Systemoutprintln("lastSunday:" + dateFormatformat(calendargetTime()));

    }

}

有不明白在问我

我的理解是如果输入的星期等于当前日期的星期数,那么返回下一个周对应星期数的日期,否则返回当前日期往后最近的一个匹配的星期数的日期。如果我的理解没问题的话下面代码就能满足你的要求:

import javautilCalendar;

import javautilDate;

public class Main {

    public static void main(String[] args) {

        Systemoutprintln(getDateByWeek(2));

    }

    /

      根据星期获取日期

     

      @param week 星期几 1代码星期日,2代表星期一。。。7代表星期六

      @return

     /

    public static Date getDateByWeek(int week) {

        int targetWeek = week;

        Calendar c = CalendargetInstance();

        // 当前日期星期数

        int currWeek = cget(CalendarDAY_OF_WEEK);

        if (currWeek == targetWeek) {

            // 如果所给星期数和当前日期星期数相等则向后推7天

            cadd(CalendarDAY_OF_MONTH, 7);

            return cgetTime();

        }

        do {

            // 向后推一天,直到星期数与所给星期数相同

            cadd(CalendarDAY_OF_MONTH, 1);

        } while (targetWeek != cget(CalendarDAY_OF_WEEK));

        return cgetTime();

    }

}

以上就是关于java获取本周所有日期,和本周第一天和最后一天,和上周所有日期,和上周第一天和上周最后一天全部的内容,包括:java获取本周所有日期,和本周第一天和最后一天,和上周所有日期,和上周第一天和上周最后一天、JAVA如果根据当前日期时间得到上周一和上周末的日期时间呢求大侠写个代码。。、利用java计算上上周,上周,本周,下周的起止时间(可实现跨年,跨月)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10112903.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存