Calander相关

作者: 时间不可逆 | 来源:发表于2018-04-15 18:43 被阅读0次

package com.lish.taskchart.utils;import java.util.Calendar;import java.util.Date;

public class DateUtils {

   public static final String[] sWeekDay = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sta"};

    /**

    * 给定日期 返回星期的字符串

    */

    public static String getWeekDay(Date date) {

        int ofWeek = getIndexDayOfWeek(date);

        return sWeekDay[ofWeek - 1];

    }

    /**

    * 比当前日期增加一天

    */

    public static Date addOneDay(Date someDay) {

        return addSomeDay(someDay, 1);

    }

    /**

    * 比当前日期减少一天

    */

    public static Date subOneDay(Date someDay) {

        return addSomeDay(someDay, -1);

    }

    /**

    * 比当前多num天 num > 0,增加了几天,num < 0 前几天

    */

    public static Date addSomeDay(Date someDay, int num) {

        Calendar instance = Calendar.getInstance();

        instance.setTime(someDay);

        instance.add(Calendar.DATE, num);

        return instance.getTime();

    }

    /**

    * 两个日期的相差天数 含正负

    * antherDay 在之后 day 返回正值 否则 负值

    */

    public static int getDaysBetween(Date day, Date antherDay) {

        boolean symbol = day.after(antherDay);//默认 antherDay 在 day 后的某一天

        if (symbol) {//时间交换

            Date temp = day;

            day = antherDay;

            antherDay = temp;

        }

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(day);

        Calendar d1 = (Calendar) calendar.clone();

        calendar.setTime(antherDay);

        int days = calendar.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);

        int year = calendar.get(Calendar.YEAR);

        if (d1.get(Calendar.YEAR) != year) {

            do {

                days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);

                d1.add(Calendar.YEAR, 1);

            } while (d1.get(Calendar.YEAR) != year);

        }

        return symbol ? -days : days;

    }

    /**

    * 返回当前日期是周几

    * Calendar.SUNDAY = 1

    * Calendar.MONDAY = 2

    * Calendar.TUESDAY = 3

    * Calendar.WEDNESDAY = 4

    * Calendar.THURSDAY = 5

    * Calendar.FRIDAY = 6

    * Calendar.SATURDAY = 7

    */

    public static int getIndexDayOfWeek(Date date) {

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(date);

        return calendar.get(Calendar.DAY_OF_WEEK);

    }

    /**

    * 这里转换为 周一到周日

    */

    public static Date[] getWeekDates(Date date) {

        Date[] dates = new Date[7];

        int ofWeek = getIndexDayOfWeek(date);

        int sub = ofWeek - 2;//前面的天数

        if (sub < 0) {//今天是周日

            sub = 6;

        }

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

            if (sub > 0) {

                dates[i] = addSomeDay(date, -sub);

                sub--;

            } else if (sub == 0) {

                dates[i] = date;

            } else {

                dates[i] = addSomeDay(date, i - ofWeek + 2);//i+2 是为了和 周几同步 周二 为 3,此时 i = 1;

            }

        }

        return dates;

    }

    /**

    * 返回给定日期月份的天数

    */

    public static int getTotalDayOfMonth(Date date) {

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(date);

        return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

    }

    /**

    * 返回给定日期所在月份第一天的日期

    */

    public static Date getFirstDayOfMonth(Date date) {

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(date);

        int minimum = calendar.getActualMinimum(Calendar.DAY_OF_MONTH);

        calendar.set(Calendar.DAY_OF_MONTH, minimum);

        return calendar.getTime();

    }

    /**

    * 返回给定日期所在月份最后一天的日期

    */

    public static Date getLastDayOfMonth(Date date) {

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(date);

        int maximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

        calendar.set(Calendar.DAY_OF_MONTH, maximum);

        return calendar.getTime();

    }

}

相关文章

  • Calander相关

    package com.lish.taskchart.utils;import java.util.Calenda...

  • POI 读取Excel,日期格式错误,读取为数值型问题

    这个问题网上有许多解决方法: 读取的数值为1900年距离日期的天数,调用calander api从1900年加天数...

  • Pearson相关、Spearman相关、Kendall相关

    1、三大相关系数 1.1 Pearson相关系数 要理解Pearson相关系数,首先要理解协方差(Covarian...

  • 2018前端面试总结,看完弄懂,工资少说加3K

    HTML相关 CSS相关 JAVASCRIPT相关 DOM相关 HTTP相关 VUE相关 算法相关 网络安全相关 ...

  • AS相关

    手动创建一个模块 手动创建一个模块,可以先写build.gradle文件,指明编译规则。 在项目的setting....

  • 相关

    错误地,我以为一切都相关 如同流云,河川,雨露 山之南,水之北, 旧日的,现在的 随手捡起的记忆 却不想也开了花,...

  • 相关

    vc 提取物 波色因

  • 相关

    打破"事不关己"这种避障吧 你与这个世界的任何事物都是息息相关的

  • this相关

    1.prototype2.extend3.this的定位 一、prototype 是为jquery的prototy...

  • 《相关》

    花开冬凌半日春,洋洋得意遗落丟。望见残云天黑去,徒留此情待追忆。不知道里糊涂药,似事似乎无关于。人生能有几知己,细...

网友评论

    本文标题:Calander相关

    本文链接:https://www.haomeiwen.com/subject/jrdiwxtx.html