时间工具类

1.本周开始时间戳 - 以星期一为本周的第一天

public static String getWeekStartTime() {

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());

    Calendar cal = Calendar.getInstance();

    int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 1;

    if (day_of_week == 0) {

        day_of_week = 7;

}

    cal.add(Calendar.DATE, -day_of_week + 1);

    return simpleDateFormat.format(cal.getTime());

}

2.本周结束时间戳 - 以星期一为本周的第一天

public static String getWeekEndTime() {

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());

    Calendar cal = Calendar.getInstance();

    int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 1;

    if (day_of_week == 0) {

        day_of_week = 7;

}

    cal.add(Calendar.DATE, -day_of_week + 7);

    return simpleDateFormat.format(cal.getTime());

}

 3.本月开始时间戳

public static String getMonthStartTime() {

    Calendar c = Calendar.getInstance();

    c.add(Calendar.MONTH, 0);

    c.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天

    //将小时至0

    c.set(Calendar.HOUR_OF_DAY, 0);

    //将分钟至0

    c.set(Calendar.MINUTE, 0);

    //将秒至0

    c.set(Calendar.SECOND, 0);

    //将毫秒至0

    c.set(Calendar.MILLISECOND, 0);

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());

    String dateString = format.format(c.getTime());

    Date date = null;

    try {

        date = format.parse(dateString);

    } catch (ParseException e) {

        e.printStackTrace();

}

    return format.format(date);

}


4.获取当前的星期数

public static int setCurrentDayOfWeek(Calendar calendar) {

    //一周第一天是否为星期天

    boolean isFirstSunday = (calendar.getFirstDayOfWeek() == Calendar.SUNDAY);

    //获取周几

    int weekDay = calendar.get(Calendar.DAY_OF_WEEK);

    calendar.setFirstDayOfWeek(Calendar.MONDAY);

    //若一周第一天为星期天,则-1

    if (isFirstSunday) {

        weekDay = weekDay - 1;

        if (weekDay == 0) {

            weekDay = 7;

}

}

    return weekDay;

}


5. 获取date类型的时分秒

public static String getTime(Date date) {

    SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    return dateFormat.format(date);

}


 6.获取date类型的年月日

public static String getDate(Date date) {

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

    return dateFormat.format(date);

}

7.根据日期获取本周一的时间

public static Date getThisWeekMonday(Date date) {

    Calendar cal = Calendar.getInstance();

    cal.setTime(date);

    // 获得当前日期是一个星期的第几天

    int dayWeek = cal.get(Calendar.DAY_OF_WEEK);

    if (1 == dayWeek) {

        cal.add(Calendar.DAY_OF_MONTH, -1);

}

    // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一

    cal.setFirstDayOfWeek(Calendar.MONDAY);

    // 获得当前日期是一个星期的第几天

    int day = cal.get(Calendar.DAY_OF_WEEK);

    // 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值

    cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);

    return cal.getTime();

}


8.时间字符串加/减天数

public static String dateStrToAddDay(String strDate, int dayNums) {

    Calendar c = Calendar.getInstance();

    c.setTime(DateTime.dateToString(strDate, "yyyy-MM-dd"));

    c.add(Calendar.DAY_OF_MONTH, dayNums);

    return DateTime.dateToString(c.getTime(), "yyyy-MM-dd");

}



 9.返回当前时间的前7天集合 

public static List<String> getFrontSeven(String strDate) {

    List<String> dateList = new ArrayList<>();

    Calendar c = Calendar.getInstance();

    c.setTime(DateTime.dateToString(strDate, "yyyy-MM-dd"));

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

        c.add(Calendar.DATE, -1);

        dateList.add(DateTime.dateToString(c.getTime(), "yyyy-MM-dd"));

}

    return dateList;

}



10.给定开始时间 结束时间 返回天数集合

public static List<String> getStartTime(String startTime, String endTime) {

    int interval = 0;

    try {

        if (startTime.length() == "yyyy-MM-dd HH:mm:ss".length()) {

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

            Date d1 = sdf.parse(startTime);

            Date d2 = sdf.parse(endTime);

            interval = daysBetween(d1, d2);

}

        if (startTime.length() == "yyyy-MM-dd".length()) {

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

            Date d1 = sdf.parse(startTime);

            Date d2 = sdf.parse(endTime);

            interval = daysBetween(d1, d2);

}

    } catch (ParseException e) {

        e.printStackTrace();

}

    List<String> dateList = new ArrayList<>();

    Calendar c = Calendar.getInstance();

    c.setTime(DateTime.dateToString(startTime, "yyyy-MM-dd"));

    for (int i = 0; i <= interval; i++) {

        dateList.add(DateTime.dateToString(c.getTime(), "yyyy-MM-dd"));

        c.add(Calendar.DATE, 1);

}

    return dateList;

}


11.获取今天日期  yyyy-MM-dd HH:mm:ss 

public static String getDataFroDatTime() {

    Date date = new Date();

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

    String data = formatter.format(date);

    return data;

}


12.获取两个时间段的所有日期

public static List<String> getBetweenDate(String begin, String end) {

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

    List<String> betweenList = new ArrayList<String>();

    try {

        Calendar startDay = Calendar.getInstance();

        startDay.setTime(format.parse(begin));

        startDay.add(Calendar.DATE, -1);

        while (true) {

            startDay.add(Calendar.DATE, 1);

            Date newDate = startDay.getTime();

            String newend = format.format(newDate);

            betweenList.add(newend);

            if (end.equals(newend)) {

                break;

}

}

    } catch (Exception e) {

        e.printStackTrace();

}

    return betweenList;

}


 13.判断当前时间是否在时间段内

public static Boolean belongCalendar(String beginTime, String endTime) {

    SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");//设置日期格式

    Date now = null;

    Date beginTimeByDate = null;

    Date endTimeByDate = null;

    try {

        now = df.parse(df.format(new Date()));

        beginTimeByDate = df.parse(beginTime);

        endTimeByDate = df.parse(endTime);

    } catch (Exception e) {

        e.printStackTrace();

}

    Boolean flag = belongCalendar(now, beginTimeByDate, endTimeByDate);

    return flag;

}


14.判断时间是否在时间段内

public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {

    Calendar date = Calendar.getInstance();

    date.setTime(nowTime);

    Calendar begin = Calendar.getInstance();

    begin.setTime(beginTime);

    Calendar end = Calendar.getInstance();

    end.setTime(endTime);

    if (date.after(begin) && date.before(end)) {

        return true;

    } else {

        return false;

}

}


15.获取某个时间段内所有日期

public static List<String> getDayBetweenDates(String begin, String end) {

    List<String> lDate = new ArrayList<String>();

    try {

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

        Date dBegin = sd.parse(begin);

        Date dEnd = sd.parse(end);

        lDate.add(sd.format(dBegin));

        Calendar calBegin = Calendar.getInstance();

        // 使用给定的 Date 设置此 Calendar 的时间

        calBegin.setTime(dBegin);

        Calendar calEnd = Calendar.getInstance();

        // 使用给定的 Date 设置此 Calendar 的时间

        calEnd.setTime(dEnd);

        // 测试此日期是否在指定日期之后

        while (dEnd.after(calBegin.getTime())) {

            // 根据日历的规则,为给定的日历字段添加或减去指定的时间量

            calBegin.add(Calendar.DAY_OF_MONTH, 1);

            lDate.add(sd.format(calBegin.getTime()));

}

    } catch (ParseException e) {

        e.printStackTrace();

}

    return lDate;

}

16.减一天

public static String dataBeforeDay(String dateOld) {

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

    /**

    * 减少一天

    */

    try {

        long dif = df.parse(dateOld).getTime() - 86400 * 1000; //减一天

        Date date = new Date();

        date.setTime(dif);

        return df.format(date);

    } catch (ParseException e) {

        e.printStackTrace();

}

    return "";

}

17.增加一天

public static String dataAfterDay(String dateOld) {

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

    try {

        Date dd = df.parse(dateOld);

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(dd);

        calendar.add(Calendar.DAY_OF_MONTH, 1);//增加一天

        System.out.println("增加一天之后:" + df.format(calendar.getTime()));

    } catch (ParseException e) {

        e.printStackTrace();

}

    return "";

}


18:判断俩个日期段是否重叠


/**

* 判断俩个日期段是否重叠

*/

public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");

public static boolean isOverlap(String startdate1, String enddate1, String startdate2, String enddate2) {

    Date leftStartDate = null;

    Date leftEndDate = null;

    Date rightStartDate = null;

    Date rightEndDate = null;

    try {

        leftStartDate = format.parse(startdate1);

        leftEndDate = format.parse(enddate1);

        rightStartDate = format.parse(startdate2);

        rightEndDate = format.parse(enddate2);

    } catch (ParseException e) {

        return false;

    }

    return

            ((leftStartDate.getTime() >= rightStartDate.getTime()) && leftStartDate.getTime() < rightEndDate.getTime())

                    || ((leftStartDate.getTime() > rightStartDate.getTime()) && leftStartDate.getTime() < rightEndDate.getTime())

                    || ((rightStartDate.getTime() >= leftStartDate.getTime()) && rightStartDate.getTime() < leftEndDate.getTime())

                    || ((rightStartDate.getTime() > leftStartDate.getTime()) && rightStartDate.getTime() < leftEndDate.getTime());

}


19. 获得某天最大时间2017-10-15 23:59:59

public static Date getEndOfDay(Date date) {

    LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());

    LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);

    return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());

}

20. 获得某天最小时间2017-10-15 00:00:00

public static Date getStartOfDay(Date date) {

    LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());

    LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);

    return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容