`

java 时间Utils

 
阅读更多

 基础知识点:

start

  1. 字母 日期或时间元素 表示 示例  
  2. G Era 标志符 Text AD  
  3. y 年 Year 1996; 96  
  4. M 年中的月份 Month July; Jul; 07  
  5. w 年中的周数 Number 27  
  6. W 月份中的周数 Number 2  
  7. D 年中的天数 Number 189  
  8. d 月份中的天数 Number 10  
  9. F 月份中的星期 Number 2  
  10. E 星期中的天数 Text Tuesday; Tue  
  11. a Am/pm 标记 Text PM  
  12. H 一天中的小时数(0-23) Number 0  
  13. k 一天中的小时数(1-24) Number 24  
  14. K am/pm 中的小时数(0-11) Number 0  
  15. h am/pm 中的小时数(1-12) Number 12  
  16. m 小时中的分钟数 Number 30  
  17. s 分钟中的秒数 Number 55  
  18. S 毫秒数 Number 978  
  19. z 时区 General time zone Pacific Standard Time; PST; GMT-08:00  
  20. Z 时区 RFC 822 time zone -0800  
  21.   
  22. 引用  
  23.   
  24. 日期和时间模式 结果  
  25. "yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT  
  26. "EEE, MMM d, ''yy" Wed, Jul 4, '01  
  27. "h:mm a" 12:08 PM  
  28. "hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time  
  29. "K:mm a, z" 0:08 PM, PDT  
  30. "yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM  
  31. "EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700  
  32. "yyMMddHHmmssZ" 010704120856-0700  
  33. "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700 

end

 

 

代码:

package com.miv.core.utils;

 

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.List;

 

import org.apache.commons.lang.StringUtils;

 

public class DateUtils {

    public static class DateBean {

        private Date start;

        private Date end;

 

        public Date getStart() {

            return start;

        }

 

        public void setStart(Date start) {

            this.start = start;

        }

 

        public Date getEnd() {

            return end;

        }

 

        public void setEnd(Date end) {

            this.end = end;

        }

    }

 

    public static final String M_C_PREFIX_YEAR = "20";

    // 年-月-日

    public static final String YYYY_MM_DD = "yyyy-MM-dd";

    // 年-月-日 时:分

    public static final String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";

    // 年-月-日 时:分:秒

    public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";

    // 年月日

    public static final String YYYYMMDD = "yyyyMMdd";

    // 年月日 时分

    public static final String YYYYMMDDHHMM = "yyyyMMddHHmm";

    // 年月日 时分秒

    public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";

    // 年月日 时分秒毫秒

    public static final String YYYYMMDDHHMMSSSSS = "yyyyMMddHHmmsssss";

    // 年

    public static final String YYYY = "yyyy";

    // 月

    public static final String MM = "MM";

 

    public static final Calendar calendar = Calendar.getInstance();

 

    /**

     * 

     * 功能描述 月份控件

     * 

     * <pre>

     * 特殊说明  使用DateUtils.Month month = DateUtils.Month.JANUARY;

     * month.NAME()

     * </pre>

     * 

     * @author R20962

     * @create Aug 21, 2012

     * 

     */

    public static class Month {

        public static Month NEW_YEAR = null;

        public static Month JANUARY = null;

        public static Month FEBRUARY = null;

        public static Month MARCH = null;

        public static Month APRIL = null;

        public static Month MAY = null;

        public static Month JUNE = null;

        public static Month JULY = null;

        public static Month AUGUST = null;

        public static Month SEPTEMBER = null;

        public static Month OCTOBER = null;

        public static Month NOVEMBER = null;

        public static Month DECEMBER = null;

 

        static {

            NEW_YEAR = new Month("0", "元旦", 0);

            JANUARY = new Month("1", "一月", 1);

            FEBRUARY = new Month("2", "二月", 2);

            MARCH = new Month("3", "三月", 3);

            APRIL = new Month("4", "四月", 4);

            MAY = new Month("5", "五月", 5);

            JUNE = new Month("6", "六月", 6);

            JULY = new Month("7", "七月", 7);

            AUGUST = new Month("8", "八月", 8);

            SEPTEMBER = new Month("9", "九月", 9);

            OCTOBER = new Month("10", "十月", 10);

            NOVEMBER = new Month("11", "十一月", 11);

            DECEMBER = new Month("12", "十二月", 12);

        }

        public static Month[] MONTH = { NEW_YEAR, JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER,

                OCTOBER, NOVEMBER, DECEMBER };

        private Object id; // 匹配 Object.qwuals(month.ID())

        private String name;// 一月 等

        private int arabic;// 数字从1开始

 

        public Month(String id, String name, int arabic) {

            this.id = id;

            this.name = name;

            this.arabic = arabic;

        }

 

        public Object ID() {

            return id;

        }

 

        public String NAME() {

            return name;

        }

 

        public int ARABIC() {

            return arabic;

        }

 

        public boolean isAscOver() {

            return this.arabic >= 12;

        }

 

        public boolean isAscOver(int over) {

            return this.arabic >= over;

        }

 

        public boolean isOver(int over) {

            return this.arabic > over;

        }

 

        public boolean isDescOver() {

            return this.arabic <= 1;

        }

 

        public Month increment() {

            if (this.arabic == 12) {

                return MONTH[this.arabic];

            }

            return MONTH[this.arabic + 1];

        }

 

        public Month decrement() {

            if (this.arabic == 1) {

                return MONTH[this.arabic];

            }

            return MONTH[this.arabic - 1];

        }

 

        public static Month getMonth(int month) {

            switch (month) {

                case 1:

                    return Month.JANUARY;

                case 2:

                    return Month.FEBRUARY;

                case 3:

                    return Month.MARCH;

                case 4:

                    return Month.APRIL;

                case 5:

                    return Month.MAY;

                case 6:

                    return Month.JUNE;

                case 7:

                    return Month.JULY;

                case 8:

                    return Month.AUGUST;

                case 9:

                    return Month.SEPTEMBER;

                case 10:

                    return Month.OCTOBER;

                case 11:

                    return Month.NOVEMBER;

                case 12:

                    return Month.DECEMBER;

                default:

                    return Month.NEW_YEAR;

            }

 

        }

    }

 

    /**

     * Example: getSystemDate();

     * 

     * return Date

     * 

     * @param format

     * @return

     */

    public static Date getSystemDate() {

        Date date;

        return new Date();

    }

 

    /**

     * Example: getSystemDate("yyyyMMdd");

     * 

     * return 20110820

     * 

     * @param format

     * @return

     */

    public static String getSystemDateString(String format) {

        return formatDate(new Date(), format);

    }

 

    /**

     * Example: getCurrentTime();

     * 

     * return 20110820101010222

     * 

     * @param

     * @return

     */

    public static String getCurrentTime() {

        return getSystemDateString(YYYYMMDDHHMMSSSSS);

    }

 

    /**

     * Example: formatDate(date, "yyyyMMdd");

     * 

     * date = 2011/01/02, return 20110102

     * 

     * @param date

     * @param format

     * @return

     */

    public static String formatDate(Date date, String format) {

        final SimpleDateFormat sdf = new SimpleDateFormat(format);

 

        if (date == null)

            return null;

 

        return sdf.format(date);

    }

 

    /**

     * Example: format("2011/01/10", "yyyy/MM/dd", "yyyy.MM.dd");

     * 

     * return 2011.01.10

     * 

     * @param dateString

     * @param srcFormat

     * @param targetFormat

     * @return

     */

    public static String formatDate(String dateString, String srcFormat, String targetFormat) {

        final SimpleDateFormat sdf = new SimpleDateFormat(srcFormat);

 

        Date date = null;

        try {

            if (StringUtils.isNotBlank(dateString))

                date = sdf.parse(dateString);

        } catch (ParseException e) {

        }

 

        return formatDate(date, targetFormat);

    }

 

    public static Date getDateFromStr(String dateString, String srcFormat) {

        final SimpleDateFormat sdf = new SimpleDateFormat(srcFormat);

 

        Date date = null;

        try {

            if (StringUtils.isNotBlank(dateString))

                date = sdf.parse(dateString);

        } catch (ParseException e) {

        }

 

        return date;

    }

 

    /**

     * add month

     * 

     * @param currentDate

     * @param num

     * @return

     */

    public Date getMonth(Date currentDate, int num) {

        GregorianCalendar cal = new GregorianCalendar();

        cal.setTime(currentDate);

        cal.add(GregorianCalendar.MONTH, num);// 在月份上加

        return cal.getTime();

    }

 

    /**

     * get year

     * 

     * @param currentDate

     * @param num

     * @return

     */

    public Date getYear(Date currentDate, int num) {

        GregorianCalendar cal = new GregorianCalendar();

        cal.setTime(currentDate);

        cal.add(GregorianCalendar.YEAR, num);// 在年上加

        return cal.getTime();

    }

 

    /**

     * get year

     * 

     * @param currentDate

     * @return int

     */

    public static int getYear(Date currentDate) {

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(currentDate);

        return calendar.get(Calendar.YEAR);

    }

 

    /**

     * get month

     * 

     * @param currentDate

     * @return int

     */

    public static int getMonth(Date currentDate) {

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(currentDate);

        return calendar.get(Calendar.MONTH) + 1;

    }

 

    public static int getDayOfMonth(Date currentDate) {

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(currentDate);

        return calendar.get(Calendar.DAY_OF_MONTH);

    }

 

    public static int getHourOfDay(Date currentDate) {

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(currentDate);

        return calendar.get(Calendar.HOUR_OF_DAY);

    }

 

    public static int getHour(Date currentDate) {

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(currentDate);

        return calendar.get(Calendar.HOUR);

    }

 

    public static String getAoP(Date currentDate) {

        if (getHourOfDay(currentDate) > 12) {

            return "PM";

        } else {

            return "AM";

        }

    }

 

    public static int getMinute(Date currentDate) {

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(currentDate);

        return calendar.get(Calendar.MINUTE);

    }

 

    public static String getMinute(Date currentDate, boolean flag) {

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(currentDate);

        flag = calendar.get(Calendar.MINUTE) < 10 && flag;

        if (flag) {

            return "0" + calendar.get(Calendar.MINUTE);

        } else {

            return "" + calendar.get(Calendar.MINUTE);

        }

    }

 

    public static Date getThisYearStart(int year) {

        calendar.set(year, 0, 1, 0, 0, 0);

        return calendar.getTime();

    }

 

    public static Date getThisYearEnd(int year) {

        calendar.set(year, 11, 31, 23, 59, 59);

        return calendar.getTime();

    }

 

    public static java.sql.Date fromUtilToSql(Date date) {

        java.sql.Date sqlDate = new java.sql.Date(date.getTime());

        return sqlDate;

    }

 

    public static boolean greaterThan(Date sender, Date receiver) {

        boolean flag = fromUtilToSql(sender).after(fromUtilToSql(receiver));

        return flag;

    }

 

    // 传入的月不要减一

    public static Date getThisMonthStart(int year, int month) {

        calendar.set(year, month - 1, 1, 00, 00, 00);

        return calendar.getTime();

    }

 

    // 传入的月不要减一

    public static Date getThisMonthStart(Date currentDate) {

        return getThisMonthStart(getYear(currentDate), getMonth(currentDate));

    }

 

    public static Date getThisMonthEnd(int year, int month) {

        return subDays(getThisMonthStart(year, month + 1), 1);

    }

 

    public static Date getThisMonthEnd(Date currentDate) {

        return subDays(getThisMonthStart(getYear(currentDate), getMonth(currentDate) + 1), 1);

    }

 

    public static Date addMonth(Date date, int amount) {

        return org.apache.commons.lang.time.DateUtils.addMonths(date, amount);

    }

 

    public static Date subMonths(Date date, int amount) {

        amount = 0 - amount;

        return org.apache.commons.lang.time.DateUtils.addMonths(date, amount);

    }

 

    public static Date addDays(Date date, int amount) {

        return org.apache.commons.lang.time.DateUtils.addDays(date, amount);

    }

 

    public static Date subDays(Date date, int amount) {

        amount = 0 - amount;

        return org.apache.commons.lang.time.DateUtils.addDays(date, amount);

    }

 

    public static List<DateBean> getEveryYear(Date start, Date end) {

        List<DateBean> list = new ArrayList<DateUtils.DateBean>();

        int startYear = getYear(start);

        int endYear = getYear(end);

        for (int i = startYear; i <= endYear; i++) {

            DateUtils.DateBean dateBean = new DateUtils.DateBean();

            if (i == startYear) {

                dateBean.setStart(getThisMonthStart(start));

            } else {

                dateBean.setStart(getThisYearStart(i));

            }

            if (i == endYear) {

                dateBean.setEnd(getThisMonthStart(endYear, getMonth(end) + 1));

            } else {

                dateBean.setEnd(getThisYearEnd(i));

            }

            list.add(dateBean);

        }

        return list;

    }

}

 
/************************************************************************/
应用例 -- 最近六个月,有跨年可能,解决方案 以年为单位 DateUtils.getEveryYear(beginDate, thisYear)
需要common-lang-2.4.jar
    /**
     * 最近6个月故障统计
     * 
     * @param thisYear
     * @return
     * @throws Exception
     */
    public List<Map<String, Object>> findFailureVolume(Date thisYear) throws Exception {
        int space = 6;
        Date beginDate = DateUtils.getThisMonthStart(DateUtils.subMonths(thisYear, space - 1));
        List<DateUtils.DateBean> listDate = DateUtils.getEveryYear(beginDate, thisYear);
        DateUtils.Month month = null;
        List<Map<String, Object>> dataList = null;
        List<Map<String, Object>> returnList = new ArrayList<Map<String, Object>>();
        for (int i = 0; i < listDate.size(); i++) {
            dataList = failureDao.findFailuresEveryMonth(listDate.get(i).getStart(), listDate.get(i).getEnd());
            int start = DateUtils.getMonth(listDate.get(i).getStart());
            int end = DateUtils.getMonth(listDate.get(i).getEnd());
            int year = DateUtils.getYear(listDate.get(i).getStart());
            month = DateUtils.Month.getMonth(start - 1);
            month: while (!month.isAscOver(end - 1)) {
                month = month.increment();
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("month", month.ARABIC());
                for (int j = 0; j < dataList.size(); j++) {
                    Map<String, Object> dataMap = dataList.get(j);
                    boolean flag = Integer.valueOf(dataMap.get("month").toString()).equals(month.ARABIC());
                    if (flag) {// 有值
                        map.put("year", dataMap.get("year"));
                        map.put("volume", dataMap.get("volume"));
                        returnList.add(map);
                        continue month;
                    }
                }
                // 无值
                map.put("year", year);
                map.put("volume", 0);
                returnList.add(map);
            }
        }
        return returnList;
    }
分享到:
评论

相关推荐

    javautils一些工具类

    在这个"javautils"压缩包中,我们可以预见到包含了一些自定义的Java工具类,可能涵盖了字符串处理、日期时间操作、集合操作等多个方面。 1. **字符串处理**: JavaUtils中的字符串工具类可能会包含一些扩展了Java...

    javautils工具类

    在具体实践中,"javautils工具类"可能还包含了其他通用的辅助功能,如日期时间转换、字符串操作、文件操作等。这些工具方法使得开发者能够专注于业务逻辑,而不是重复编写基础功能的代码。 总之,"javautils工具类...

    java utils 工具类

    JavaUtils工具类是Java开发中常见的一类代码集合,它们通常包含了各种常用的功能,比如字符串处理、日期时间操作、集合操作等,极大地提高了开发效率。本文将深入探讨`PropertiesUtil`这个工具类,它主要用于处理...

    java-property-utils-1.9.1.jar

    `java-property-utils-1.9.1.jar` 是一个专门针对这种情况设计的Java库,它提供了解决跨域问题的功能。这个库主要包含对Java属性文件的操作以及与CORS相关的处理。 CORS(Cross-Origin Resource Sharing)是一种...

    JavaUtils,通用的Java工具类,主要包括基础工具类(时间、正则表达式、字符串、随机数等等)_JavaUtils.zip

    JavaUtils,通用的Java工具类,主要包括基础工具类(时间、正则表达式、字符串、随机数等等)_JavaUtils

    Java_Utils:Java常见工具类以及一些优雅的代码技巧(持续更新)

    2. **日期时间处理**:Java 8引入了新的日期时间API,Java_Utils可能封装了这些API,提供更友好的日期和时间操作,比如格式化、解析、时间区间计算等。 3. **字符串工具**:字符串处理是常见的任务,项目可能包含...

    java-utils:我以前写 Java 时的 Utils。 需要单元测试!

    Java-utils 是一个包含作者在编写 Java 代码时所创建的各种实用工具类的项目。这个库可能包含各种通用功能,如字符串处理、集合操作、日期时间转换等,旨在提高开发效率和代码可重用性。然而,重要的是要注意,该...

    java-utils:杂项 Java 实用程序

    "java-utils:杂项 Java 实用程序"是一个包含多种实用工具类的Java库,它为开发者提供了方便快捷的代码片段,以解决常见的编程任务。这个库可能是由dbj开发的,其目标是提高代码的可复用性和效率,减少开发时间。 在...

    JavaUtils: Java Utilities Library-开源

    3. **日期与时间**:JavaUtils可能包含对日期和时间API的增强,比如格式化、解析、时间计算等,帮助开发者更高效地处理时间相关的问题。 4. **字符串操作**:字符串处理是开发中的常见任务,JavaUtils可能提供了...

    cors-filter-1.7.jar 和 java-property-utils-1.9.jar

    `java-property-utils-1.9.jar` 可能用于读取自定义的配置文件,例如,你可能希望根据不同的环境设置不同的CORS策略,这时可以将策略写入一个属性文件,然后使用`java-property-utils`来读取并设置过滤器的参数。...

    java_utils:编写java代码经常一些工具

    在Java编程中,工具类(Utils)是程序员经常会用到的一种设计模式,它们通常包含一组静态方法,用于执行特定的任务,比如字符串处理、日期时间操作、数学计算等。"java_utils"项目似乎是一个集合了各种Java实用工具...

    Java utils.zip

    JavaUtils.zip是一个包含Java实用工具类的压缩包,通常这些工具类是对Java标准库功能的扩展或补充,提供了一些常用且方便的静态方法。在Java编程中,自定义的工具类可以帮助开发者更高效地编写代码,减少重复工作,...

    这些年整理的一些常用Utils工具类 , 希望对大家开发有所裨益

    5. **日期时间Utils**: - 时间格式化:将日期和时间对象转换为指定格式的字符串。 - 时间计算:获取两个日期之间的差值,如天数、小时数等。 - 日期比较:判断日期是否在某个范围内。 6. **IOUtils**: - 输入...

Global site tag (gtag.js) - Google Analytics