`
Rod_johnson
  • 浏览: 73825 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

java 日期工具类

 
阅读更多

import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 *
 */
public class DateOperator extends DateParser {
    // 若客户端产生并发的情况,会有问题。
    // private static final Calendar calendar = Calendar.getInstance();

    public static Date addMonthes(Date date, int monthes) {
        if (date == null)
            return null;
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, monthes);
        return calendar.getTime();
    }

    public static int getMonthes(Date date1, Date date2) {
        long miu = DateParser.getMinutes(date1, date2);
        return (int) (miu / (60 * 24 * 31));
    }

    public static Date addYears(Date date, int years) {
        if (date == null)
            return null;
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.YEAR, years);
        return calendar.getTime();
    }

    /**
     * 取得每月的最后一天
     *
     * @param year
     * @param month12
     *            实际月份1-12
     * @return
     */
    public static Date getLastDayOfMonth12(int year, int month12) {
        return getLastDayOfMonth11(year, month12 - 1);
    }

    /**
     * 取得每月的第一天
     *
     * @param year
     * @param month12
     *            实际月份1-12
     * @return
     */
    public static Date getFirstDayOfMonth12(int year, int month12) {
        return getFirstDayOfMonth11(year, month12 - 1);
    }

    /**
     * 把一个日期值添加某些天,在查询条件当中如果取两个日期之前进行查询 一般情况下要把截止日期加上1天
     *
     * @param date
     *            原来的日期
     * @param days
     *            要添加的天数
     * @return 加完后的日期,如果传入的Date为null则也返回null
     */

    public static Date addHours(Date date, int hour) {
        if (date == null)
            return null;
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.HOUR_OF_DAY, hour);
        return calendar.getTime();
    }

    /**
     * 取得每月的最后一天
     *
     * @param year
     * @param month11
     *            计算机月份0-11
     * @return
     */
    public static Date getLastDayOfMonth11(int year, int month11) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month11, 01);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));

        return calendar.getTime();
    }

    /**
     * 取得每月的第一天
     *
     * @param year
     * @param month11
     *            计算机月份0-11
     * @return
     */
    public static Date getFirstDayOfMonth11(int year, int month11) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month11, 01);
        return calendar.getTime();
    }

    public static int compareYear(Date startDate, Date endDate) {
        Long years = new Long(0);
        if (startDate != null && endDate != null) {
            years = ((endDate.getTime() - startDate.getTime()) / 1000 / 60 / 60 / 24 / 365);
        }
        if (years.intValue() == 0)
            return years.intValue();
        if (addYears(startDate, years.intValue()).after(endDate) || addYears(startDate, years.intValue()).equals(endDate))
            return years.intValue();
        else
            return years.intValue() - 1;
    }

    public static int compareMonthes(Date startDate, Date endDate) {
        Long monthes = new Long(0);
        if (startDate != null && endDate != null) {
            monthes = ((endDate.getTime() - startDate.getTime()) / 1000 / 60 / 60 / 24 / 31);
        }
        if (monthes.intValue() == 0)
            return monthes.intValue();
        if (addMonthes(startDate, monthes.intValue()).before(endDate) || addMonthes(startDate, monthes.intValue()).equals(endDate))
            return monthes.intValue();
        else
            return monthes.intValue() - 1;
    }

    public static int compareMonthes_1(Date startDate, Date endDate) {
        BigDecimal monthes = new BigDecimal(0);
        if (startDate != null && endDate != null) {
            monthes = monthes.valueOf((endDate.getTime() - startDate.getTime()) / 1000f / 60f / 60f / 24f / 31f);
        }
        return monthes.setScale(0, BigDecimal.ROUND_DOWN).intValue();
    }

    public static Long compareWeek(Date startDate, Date endDate) {
        BigDecimal days = new BigDecimal(0);
        if (startDate != null && endDate != null) {
            days = days.valueOf((endDate.getTime() - startDate.getTime()) / 1000 / 60 / 60 / 24 / 7);
        }
        return days.setScale(0, BigDecimal.ROUND_UP).longValue();
    }

    public static Long compareDays(Date startDate, Date endDate) {
        return getDays(startDate, endDate);
    }

    public static Long compareHours(Date startDate, Date endDate) {
        return getHours(startDate, endDate);
    }

    public static Long compareMinutes(Date startDate, Date endDate) {
        return getMinutes(startDate, endDate);
    }

    public static int getYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.YEAR);
    }

    /**
     * 取得对应日期的季度
     *
     * @param date
     * @return
     */
    public static int getQuarter(Date date) {
        int month = getMonth11(date);
        int quarter = month / 3 + 1;
        return quarter;
    }

    /**
     * 根据季度取得月份
     *
     * @param quarter
     * @return
     */
    public static int[] getMonthsByQuarter(int quarter) {
        int[] months = new int[3];
        switch (quarter) {
        case 1:
            months[0] = 1;
            months[1] = 2;
            months[2] = 3;
            break;
        case 2:
            months[0] = 4;
            months[1] = 5;
            months[2] = 6;
            break;
        case 3:
            months[0] = 7;
            months[1] = 8;
            months[2] = 9;
            break;
        case 4:
            months[0] = 10;
            months[1] = 11;
            months[2] = 12;
            break;
        default:
            break;
        }
        return months;
    }

    /**
     * @param date
     * @return 0-11,计算机月份
     */
    public static int getMonth11(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.MONTH);
    }

    /**
     * @param date
     * @return 取得当前时间是今年的第几周
     */
    public static int getWeekOfYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.WEEK_OF_YEAR);
    }

    /**
     * @param date
     * @return 取得当前时间是本月的第几周
     */
    public static int getWeekOfMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.WEEK_OF_MONTH);
    }

    /**
     * @param date
     * @return 1-12,实际月份
     */
    public static int getMonth12(Date date) {
        return getMonth11(date) + 1;
    }

    public static Date addDays(Date date, int days) {
        if (date == null)
            return null;
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_YEAR, days);
        return calendar.getTime();
    }

    public static Date createDate(int year, int month, int day) {
        return createDate(year, month, day, 0, 0, 0);
    }

    public static Date createDate(int year, int month, int day, int hourOfDay, int minute, int second) {
        Calendar cal = Calendar.getInstance();
        cal.set(year, month, day, hourOfDay, minute, second);
        return cal.getTime();
    }

    public static String month2String(int m) {
        if (m < 10)
            return "0" + String.valueOf(m);
        else
            return String.valueOf(m);
    }

    public static int getDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 取得对应月份的天数
     *
     * @param date
     * @return
     */
    public static int getDaysOfMonth(int year, int month11) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month11, 01);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        return calendar.get(Calendar.DAY_OF_MONTH);
    }

    public static boolean isTime(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int minute = calendar.get(Calendar.MINUTE);
        return minute > 0;
    }

    public static boolean isWeekday(Date date) {
        return !(isSaturday(date) || isSunday(date));
    }

    public static boolean isSaturday(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int index = calendar.get(Calendar.DAY_OF_WEEK);
        return index == Calendar.SATURDAY;
    }

    public static boolean isSunday(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int index = calendar.get(Calendar.DAY_OF_WEEK);
        return index == Calendar.SUNDAY;
    }

    public static Date getFirstDayOfMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DATE, 1);
        return calendar.getTime();
    }

    public static Date truncDate(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 取上个月的最后一天
     *
     * @return
     */

    public static Date getLastDayOfLastMonth(Date date) {
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        calendar.set(Calendar.MONTH, -1);
        return DateOperator.getLastDayOfMonth(calendar.getTime());
    }

    /**
     * 取上个月的第一天
     *
     * @return
     */

    public static Date getFirstDayOfLastMonth(Date date) {
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        calendar.roll(Calendar.MONDAY, -1);// 获得上一个月日期即月份减去一月
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        // calendar.roll(Calendar.DATE, 1); //设置日期为当前月的第一天
        calendar.set(Calendar.HOUR, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();

    }

    /**
     * 取本月的最后一天
     *
     * @return
     */

    public static Date getLastDayOfMonth(Date date) {
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        // calendar.roll(Calendar.DATE, 0 - calendar.get(Calendar.DATE));
        calendar.set(Calendar.HOUR, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);

        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));

        return calendar.getTime();
    }

    /**
     *
     *
     * @return
     */

    public static Long getLastYear(Long year, String month) {

        if (new Integer(month) == 1) {
            year = year - 1;
        }
        return year;
    }

    public static String getLastMonth(Long year, String month) {
        if (new Integer(month) == 1) {
            month = "12";
        } else {
            month = DateOperator.month2String(new Integer(month) - 1);
        }
        return month;
    }

    public static Long getNextYear(Long year, String month) {

        if (new Integer(month) == 12) {
            year = year + 1;
        }
        return year;
    }

    public static String getNextMonth(Long year, String month) {
        if (new Integer(month) == 12) {
            month = "01";
        } else {
            month = DateOperator.month2String(new Integer(month) + 1);
        }
        return month;
    }

    public static String getSecond2Time(long second, boolean isSecond, boolean isChinese) {
        StringBuffer rtnValue = new StringBuffer();
        int h = Double.valueOf(Math.floor(second / 60 / 60)).intValue();
        int m = Double.valueOf(Math.floor((second - 60 * 60 * h) / 60)).intValue();
        int s = Double.valueOf(Math.floor((second - 60 * 60 * h - 60 * m))).intValue();
        if (isChinese) {
            rtnValue.append((h < 10 ? ("0" + h) : h)).append("小时").append((m < 10 ? ("0" + m) : m)).append("分");
            if (isSecond) {
                rtnValue.append((s < 10 ? ("0" + s) : s)).append("秒");
            }
        } else {
            rtnValue.append((h < 10 ? ("0" + h) : h)).append(":").append((m < 10 ? ("0" + m) : m)).append(":");
            if (isSecond) {
                rtnValue.append((s < 10 ? ("0" + s) : s));
            }
        }
        return rtnValue.toString();
    }

    /**
     * 将秒转化成 00:00:00 或者中文 的 00小时00分00秒
     *
     * @param second
     * @param isChinese
     * @return
     */
    public static String getSecond2Time(long second, boolean isChinese) {
        return getSecond2Time(second, true, isChinese);
    }
}

分享到:
评论

相关推荐

    Java日期工具类

    Java日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 6、获取上个月("MMM yyyy") 7、获取上个月("yyyymm") 8、获取上个月("yyyy-mm") 9、...

    java日期工具类

    java日期工具类,java日期工具类,java日期工具类,java日期工具类

    Java日期工具类,学习代码

    Java日期工具类是Java开发中不可或缺的一部分,它们用于处理日期和时间相关的操作。在Java中,日期和时间处理涉及到多个类和接口,如`java.util.Date`、`java.util.Calendar`、`java.text.SimpleDateFormat`以及Java...

    Java 日期比较工具类

    Java 日期比较工具类 各种日期操作及计算( 获取两个日期 间隔天数 间隔月数 格式化日期 )

    Java日期工具类,Java时间工具类,Java时间格式化

    本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...

    java 日期工具类 java 日期工具类

    public static final String PATTERN_YYYY_MM_DD = "yyyy-MM-dd";public static final String YYYY_MM_DD = "yyyyMMdd";public static final String PATTERN_YYYY_MM_DD2 = "yyyy/MM/dd";/** 完整时间 yyyy-MM-dd HH...

    DateUtil java日期工具类

    个人整理的java的关于Date对象的日期时间处理工具类,若存在问题还望大家在评论中提出,我将一直进行修改维护

    自封装java日期工具类上传

    这是日期工具类,后续会继续上传

    日期 dateutil Java 日期工具类

    快速日期格式化类 ,线程安全的 包括:获取 DateUtil.STYLE格式的日期 字符转日期 日期转字符 字符日期从src_format改为dest_format 返回当前系统日期时间等

    Java日期工具类DateUtils实例详解

    Java 日期工具类 DateUtils 实例详解 本文主要介绍了 Java 日期工具类 DateUtils 实例的实现和使用,涵盖了日期工具类的常用方法和变量,包括日期格式化、字符串转换、日期比较等。 日期工具类 DateUtils ...

    java日期工具类-各种转换

    各种日期格式化和转换 将 Calendar 转为字符串 获取当前月份的最后一天 根据 timestamp 生成各类时间状态串 计算两个日期之间相差的天数 等等等等

    最全的java时间(日期)工具类

    本文将深入探讨Java中的日期时间工具类,特别是基于给定的"DateUtil.java"文件,我们将聚焦在传统`java.util.Date`和`java.text.SimpleDateFormat`以及Java 8的`java.time`包中的相关类。 首先,我们来看看`java....

    java日期工具类DateUti

    一名优秀的程序员,不仅需要有着丰富解决问题的方案,...虽然网络上也有类似的工具类,但我愿意自己写的原因有三: 1、好代码并不容易找,不满足需要的倒是不少 2、可能存在未知的bug 3、丧失了巩固和提高自己的机会

    java日期工具类实例分享

    Java日期工具类在软件开发中扮演着重要角色,尤其是在处理与日期和时间相关的任务时。本文分享的`DateUtils`是一个自定义的日期工具类,它提供了多种格式化和解析日期的方法,以适应不同的需求。下面将详细介绍这个...

    java日期相关处理工具类大全

    在开发过程中,经常会判断日期处理。文档是开发过程中对时间处理,几乎包含不了所有用的转换,请放心使用。

Global site tag (gtag.js) - Google Analytics