JAVA时间计算

package com.Utils.xioahua;
 
/**
 * Calendar计算 
 * @Author  搬砖小华
 * @Date 2022/08/05
 */
 
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.Map;
 
public class DateUtil {
 
    /**
     * 获取今日开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setDayRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        condition.put("startTime", calendar.getTime());
        calendar.set(Calendar.HOUR_OF_DAY, 24);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取昨天开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setYesterdayRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, -24);
        condition.put("startTime", calendar.getTime());
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        condition.put("stopTime", calendar.getTime());
 
 
    }
 
    /**
     * 获得最近三天的开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setThreeRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 24);
        condition.put("stopTime", calendar.getTime());
        calendar.set(Calendar.HOUR_OF_DAY, -72);
        condition.put("startTime", calendar.getTime());
    }
 
    /**
     * 获得近一周的开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setDaySevenRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 24);
        condition.put("stopTime", calendar.getTime());
        calendar.set(Calendar.HOUR_OF_DAY, -168);
        condition.put("startTime", calendar.getTime());
    }
 
    /**
     * 获得近一月的开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setDayTRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 24);
        condition.put("stopTime", calendar.getTime());
        calendar.set(Calendar.HOUR_OF_DAY, -720);
        condition.put("startTime", calendar.getTime());
    }
 
    /**
     * 获取本周开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setWeekRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
 
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.DAY_OF_WEEK, 7);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
 
    }
 
    /**
     * 获取上周开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setLastWeekRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        calendar.add(Calendar.DAY_OF_WEEK, -7);
        condition.put("startTime", calendar.getTime());
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
        calendar.add(Calendar.DAY_OF_WEEK, 6);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取本月开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setMonthRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.DAY_OF_WEEK, 7);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        // calendar.set(Calendar.HOUR_OF_DAY, 24);
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取上月开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setLastMonthRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.add(Calendar.MONTH, -1);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.DAY_OF_WEEK, 7);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        //calendar.set(Calendar.HOUR_OF_DAY, 24);
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取本季度开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setQuarterRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        int currentMonth = calendar.get(Calendar.MONTH) + 1;
        try {
            if (currentMonth >= 1 && currentMonth <= 3)
                calendar.set(Calendar.MONTH, 0);
            else if (currentMonth >= 4 && currentMonth <= 6)
                calendar.set(Calendar.MONTH, 3);
            else if (currentMonth >= 7 && currentMonth <= 9)
                calendar.set(Calendar.MONTH, 6);
            else if (currentMonth >= 10 && currentMonth <= 12)
                calendar.set(Calendar.MONTH, 9);
            calendar.set(Calendar.DATE, 1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.MONTH, 3);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取上季度开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setLastQuarterRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        int currentMonth = calendar.get(Calendar.MONTH) + 1;
        try {
            if (currentMonth >= 1 && currentMonth <= 3)
                calendar.set(Calendar.MONTH, 0);
            else if (currentMonth >= 4 && currentMonth <= 6)
                calendar.set(Calendar.MONTH, 3);
            else if (currentMonth >= 7 && currentMonth <= 9)
                calendar.set(Calendar.MONTH, 6);
            else if (currentMonth >= 10 && currentMonth <= 12)
                calendar.set(Calendar.MONTH, 9);
            calendar.set(Calendar.DATE, 1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        calendar.add(Calendar.MONTH, -3);
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.MONTH, 3);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取近半年开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setHalfYearRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        calendar.add(Calendar.MONTH, -6);
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.MONTH, 6);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取上半年开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setUpHalfYearRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), 0, calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.MONTH, 6);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取下半年开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setNextHalfYearRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), 0, calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        calendar.add(Calendar.MONTH, 6);
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.MONTH, 6);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
 
    /**
     * 获取本年开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setYearRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), 0, calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.YEAR, 1);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取上一年开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setLastYearRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), 0, calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        calendar.add(Calendar.YEAR, -1);
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.YEAR, 1);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * ("startTime" -> "Fri Jun 08 00:00:00 CST 2018")String的Date转为String类型的date
     */
    public static String strToformatDate(String date) {
        String str = "";
        Date date1 = new Date();
        try {
            DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
            date1 = df.parse(date);
            df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            str = df.format(date1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str;
    }





​
 public static Date timeToTalculate(Date date,String years,int amount){
        Calendar c = Calendar.getInstance();
        //设置时间
        c.setTime(date);
        if(years.equals("day")){
            //时间加一天
            c.add(Calendar.DAY_OF_MONTH, amount);
            //get获取时间
            return c.getTime();
        }else if(years.equals("year")){
            c.add(Calendar.YEAR, amount);
            return c.getTime();
        }
        return null;
    }

​
 
 
}








​
@Test
    public void test4(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
        /*
         * 获取15天后是多少号?
         *
         * add(int field,int n)
         * 为当前calendar指定时间分量上累加给定值
         * 若传入的是负数,则是累减
         */
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DAY_OF_YEAR, 15);  //给当前时间加15天
        //System.out.println(calendar.getTime());
        System.out.println(sdf.format(calendar.getTime()));
 
 
        /*
         * 三个月零十天后的那周的星期三是几号?
         */
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH, 3); //给当前时间加3个月
        cal.add(Calendar.DAY_OF_YEAR, 10);  //给当前时间加10天
        //得出三个月十天后的日期,然后将日期设为当周星期三
        cal.set(Calendar.DAY_OF_WEEK, 4); //1是周天,所以4是周三
        //System.out.println(cal.getTime());
        System.out.println(sdf.format(cal.getTime()));
 
 
        /*
         * 获取某个时间分量所允许的最大值
         * 获取今年最大天数
         */
        Calendar cal1 = Calendar.getInstance();
        int days = cal1.getActualMaximum(Calendar.DAY_OF_YEAR);
        System.out.println("今年最大天数为:"+days+"天");
 
        /*
         * 一周的第一天是星期日
         * 获取当前是星期几
         */
        Calendar cal2 = Calendar.getInstance();
        int w = cal2.get(Calendar.DAY_OF_WEEK);
        System.out.println("今天是星期:"+(w==1?7:w-1));
    }

​

放松一下:

1. 一程序员去面试,面试官问:“你毕业才两年,这三年工作经验是怎么来的?!”程序员答:“加班。”

2. 某程序员对书法十分感兴趣,退休后决定在这方面有所建树。于是花重金购买了上等的文房四宝。一日,饭后突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:hello world。

3. 问:程序员最讨厌康熙的哪个儿子。答:胤禩。因为他是八阿哥(bug)

4. 程序猿要了3个孩子,分别取名叫Ctrl、Alt 和Delete,如果他们不听话,程序猿就只要同时敲他们一下就会好的。

5. 今天在公司听到一句惨绝人寰骂人的话:“你TM就是一个没有对象的野指针!”

6. 程xx遭遇车祸成植物人,医生说她活下来的希望只有万分之一,唤醒更为渺茫。她的同事和亲人没放弃,并根据程xx对testing痴迷的作风,每天都在她身边念:“你测的模块上线后回滚了。”奇迹发生了,程xx醒来第一句话:确认那模块是我测的?

7. 一个程序员在海滨游泳时溺水身亡。他死前拼命的呼救,当时海滩上有许多救生员,但是没有人救他。因为他一直大喊“F1!”“F1!”,谁都不知道“F1”究竟是什么意思。

8. 世界上最远的距离,是我在if里你在else里,虽然经常一起出现,但却永不结伴执行。

9. 正在码代码ing,医院回来的同事一脸的苦逼样子,问他怎么了?他回答:得了类风湿性关节炎了,我怕会遗传给下一代啊。我一脸的问号:谁说类风湿性关节炎能遗传的?丫一脸诧异:类不是继承的吗?

10. 我很奇怪客栈这个词,难道后入住的必须先退房吗?

11. 话说,决定一个程序员跳槽与否的关键因素是他前同事的现工资。

12. 程序员最憋屈的事情就是:你辛辛苦苦熬夜写了一个风格优雅的源文件,被一个代码风格极差的同事改了且没署名,以至于别人都以为你是写的。

13. 前端工程师说,我去交友网站找女朋友去了。朋友问,找到了么?工程师说,找到了他们页面的一个bug。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值