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);
}
}
- 浏览: 73825 次
- 性别:
- 来自: 上海
最新评论
-
一叶之源:
[list][*][list][*][*][list][*][ ...
jqGrid 方法 -
xukongmoji:
引用多谢!解决了!
CGLIB Enhancement failed -
lucky16:
是有点麻烦!但是还是学习了。过几天要用这个。希望有人可以有更简 ...
用户,角色,权限常用实现方法 -
yewen0125:
这个很普通
用户,角色,权限常用实现方法 -
christensen:
的确很常用
用户,角色,权限常用实现方法
相关推荐
Java日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 6、获取上个月("MMM yyyy") 7、获取上个月("yyyymm") 8、获取上个月("yyyy-mm") 9、...
java日期工具类,java日期工具类,java日期工具类,java日期工具类
Java日期工具类是Java开发中不可或缺的一部分,它们用于处理日期和时间相关的操作。在Java中,日期和时间处理涉及到多个类和接口,如`java.util.Date`、`java.util.Calendar`、`java.text.SimpleDateFormat`以及Java...
Java 日期比较工具类 各种日期操作及计算( 获取两个日期 间隔天数 间隔月数 格式化日期 )
本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...
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...
个人整理的java的关于Date对象的日期时间处理工具类,若存在问题还望大家在评论中提出,我将一直进行修改维护
这是日期工具类,后续会继续上传
快速日期格式化类 ,线程安全的 包括:获取 DateUtil.STYLE格式的日期 字符转日期 日期转字符 字符日期从src_format改为dest_format 返回当前系统日期时间等
Java 日期工具类 DateUtils 实例详解 本文主要介绍了 Java 日期工具类 DateUtils 实例的实现和使用,涵盖了日期工具类的常用方法和变量,包括日期格式化、字符串转换、日期比较等。 日期工具类 DateUtils ...
各种日期格式化和转换 将 Calendar 转为字符串 获取当前月份的最后一天 根据 timestamp 生成各类时间状态串 计算两个日期之间相差的天数 等等等等
本文将深入探讨Java中的日期时间工具类,特别是基于给定的"DateUtil.java"文件,我们将聚焦在传统`java.util.Date`和`java.text.SimpleDateFormat`以及Java 8的`java.time`包中的相关类。 首先,我们来看看`java....
一名优秀的程序员,不仅需要有着丰富解决问题的方案,...虽然网络上也有类似的工具类,但我愿意自己写的原因有三: 1、好代码并不容易找,不满足需要的倒是不少 2、可能存在未知的bug 3、丧失了巩固和提高自己的机会
Java日期工具类在软件开发中扮演着重要角色,尤其是在处理与日期和时间相关的任务时。本文分享的`DateUtils`是一个自定义的日期工具类,它提供了多种格式化和解析日期的方法,以适应不同的需求。下面将详细介绍这个...
在开发过程中,经常会判断日期处理。文档是开发过程中对时间处理,几乎包含不了所有用的转换,请放心使用。