时间工具类
来源:互联网 发布:单身约会软件 编辑:程序博客网 时间:2024/06/05 15:26
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 日期工具类
* @author pccc
*
*/
public class DateTools {
/**
* 获取当前日期的前一天
*
* @param date
* @return
*/
public static Date getBeforeDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, -1);
date = calendar.getTime();
return date;
}
/**
* 获取当前日期的后一天
*
* @param date
* @return
*/
public static Date getNextDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, 1);
date = calendar.getTime();
return date;
}
/**
* 获取当前月第一天
*
* @param date
* @return
*/
public static Date getFirstDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
return calendar.getTime();
}
/**
* 获取当前月最后一天
*
* @param date
* @return
*/
public static Date getLastDay(Date date) {
Calendar ca = Calendar.getInstance();
ca.set(Calendar.DAY_OF_MONTH,
ca.getActualMaximum(Calendar.DAY_OF_MONTH));
return ca.getTime();
}
/**
* 获得1970年1月1日0时00分00秒000毫秒到当天指定时间点之间的毫秒数
* 想获得今天20:00:00:000整的毫秒数:
* 参数可传:getMilliseconds(20, 0, 0, 0)
* @author yuan.yu
* @date 2017-4-28
* @param calendar
* @param hour
* @param minute
* @param second
* @param millisecond
* @return 1970年1月1日0时00分00秒000毫秒到当天指定时间点之间的毫秒数
*/
public static long getMilliseconds(int hour, int minute, int second, int millisecond) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
calendar.set(Calendar.MILLISECOND, millisecond);
return calendar.getTime().getTime();
}
/**
* 获得1970年1月1日0时00分00秒000毫秒到指定时间点之间的毫秒数
* 比如像获得2017-05-30 20:00:00:000的毫秒数
* 可传参数:getMilliseconds(2017, 5, 30, 20, 0, 0, 0)
* @author yuan.yu
* @date 2017-5-18
* @param year
* @param month
* @param day
* @param hour
* @param minute
* @param second
* @param millisecond
* @return 1970年1月1日0时00分00秒000毫秒到指定时间点之间的毫秒数
*/
public static long getMilliseconds(int year, int month, int day, int hour, int minute, int second, int millisecond) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month-1);
calendar.set(Calendar.DATE, day);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
calendar.set(Calendar.MILLISECOND, millisecond);
return calendar.getTime().getTime();
}
/**
* 获取格式为:yyyy-MM-dd HH:mm:ss的字符串日期的毫秒数
* 从1970年1月1日0时00分00秒000毫秒开始
* @author yuan.yu
* @date 2017-5-13
* @param date
* @return 1970年1月1日0时00分00秒000毫秒到指定时间点之间的毫秒数
*/
public static long getMilliseconds(String date) {
int year = Integer.parseInt(date.substring(0,4));
int month = Integer.parseInt(date.substring(5,7));
int day = Integer.parseInt(date.substring(8,10));
int hour = Integer.parseInt(date.substring(11,13));
int minute = Integer.parseInt(date.substring(14,16));
int second = Integer.parseInt(date.substring(17,19));
int millisecond = 0;
return getMilliseconds(year, month, day, hour, minute, second, millisecond);
}
/**
* 获得当天指定时间点与系统当前时间的秒数(系统当前时间大于指定时间时得到负的秒数)
* 比如想获得今天20:00:00:000与系统当前时间之间的秒数
* 可传参数:getSecond(20, 0, 0, 0)
* @author yuan.yu
* @date 2017-4-28
* @param hour
* @param minute
* @param second
* @param millisecond
* @return 当天指定时间点与系统当前时间的秒数(系统当前时间大于指定时间时返回负的秒数)
*/
public static int getSecond(int hour, int minute, int second, int millisecond) {
return (int) (getMilliseconds(hour, minute, second, millisecond) - System.currentTimeMillis()) / 1000;
}
/**
* 获得本周周日时间
* @return
*/
public static Date getSundayOfThisWeek() {
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);
cal.set(cal.get(cal.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH),
23, 59, 59);
return cal.getTime();
}
/**
* 获得当天23:59:59的时间
* @return
*/
public static Date getEndTimeToday() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(cal.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH),
23, 59, 59);
return cal.getTime();
}
/**
* 获取当前月最后一天23:59:59的时间
* @return
*/
public static Date getLastTimeThisMonth() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH,
cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH),
23, 59, 59);
return cal.getTime();
}
/**
* 字符串转成日期类型
*
* @param date
* @return
*/
public static Date StringToDate(String date, String type) {
SimpleDateFormat sdf = new SimpleDateFormat(type);
try {
return sdf.parse(date);
} catch (ParseException e) {
return null;
}
}
/**
* 判断指定日期与当前时间是否为同一自然天
* @author yuan.yu
* @date 2017-7-26
* @description
* @param appointDate 指定的日期
* @return
*/
public static boolean theSameDay(Date appointDate) {
Calendar appointCal = Calendar.getInstance();
Calendar nowCal = Calendar.getInstance();
appointCal.setTime(appointDate);
return appointCal.get(Calendar.YEAR) == nowCal.get(Calendar.YEAR)
&& appointCal.get(Calendar.MONTH) == nowCal.get(Calendar.MONTH)
&& appointCal.get(Calendar.DAY_OF_YEAR) == nowCal.get(Calendar.DAY_OF_YEAR);
}
/**
* 判断两个指定日期是否为同一自然天
* @author yuan.yu
* @date 2017-7-26
* @description
* @param appointDate
* @param anotherAppointDate
* @return
*/
public static boolean theSameDay(Date appointDate, Date anotherAppointDate) {
Calendar appointCal = Calendar.getInstance();
Calendar anotherCal = Calendar.getInstance();
appointCal.setTime(appointDate);
appointCal.setTime(anotherAppointDate);
return appointCal.get(Calendar.YEAR) == anotherCal.get(Calendar.YEAR)
&& appointCal.get(Calendar.MONTH) == anotherCal.get(Calendar.MONTH)
&& appointCal.get(Calendar.DAY_OF_YEAR) == anotherCal.get(Calendar.DAY_OF_YEAR);
}
/**
* 判断指定时间与当前时间是否在同一自然周
* @author yuan.yu
* @date 2017-7-26
* @description
* @param appointDate
* @return
*/
public static boolean theSameWeek(Date appointDate) {
Calendar appointCal = Calendar.getInstance();
Calendar nowCal = Calendar.getInstance();
// 设置星期一为一个周的第一天
appointCal.setFirstDayOfWeek(Calendar.MONDAY);
nowCal.setFirstDayOfWeek(Calendar.MONDAY);
appointCal.setTime(appointDate);
return theSameWeek(appointCal, nowCal);
}
/**
* 判断两个指定的日期否在同一自然周
* @author yuan.yu
* @date 2017-7-26
* @description
* @param appointDate
* @param anotherAppointDate
* @return
*/
public static boolean theSameWeek(Date appointDate, Date anotherAppointDate) {
Calendar appointCal = Calendar.getInstance();
Calendar anotherCal = Calendar.getInstance();
// 设置星期一为一个周的第一天
appointCal.setFirstDayOfWeek(Calendar.MONDAY);
anotherCal.setFirstDayOfWeek(Calendar.MONDAY);
appointCal.setTime(appointDate);
anotherCal.setTime(anotherAppointDate);
return theSameWeek(appointCal, anotherCal);
}
/**
* 判断两个时间是否在同一自然周内
* @author yuan.yu
* @date 2017-7-26
* @description
* @param appointCal
* @param nowCal
* @param subYear
* @return
*/
private static boolean theSameWeek(Calendar appointCal, Calendar nowCal) {
// 两个日期的年份之差
int subYear = nowCal.get(Calendar.YEAR) - appointCal.get(Calendar.YEAR);
// 两个日期的年份之差为0,同时两个日期在同一年中的周数相等
if (subYear == 0 && nowCal.get(Calendar.WEEK_OF_YEAR) == appointCal.get(Calendar.WEEK_OF_YEAR)) {
return true;
}
// 指定时间的年份比当前时间所在年份少一年,同时指定时间所在月份在其所在年份的最后一个月(12月),同时两个日期在同一年中的周数相等。
if (subYear == 1 && appointCal.get(Calendar.MONTH) == 11
&& nowCal.get(Calendar.WEEK_OF_YEAR) == appointCal.get(Calendar.WEEK_OF_YEAR)) {
return true;
}
// 当前时间的年份比指定时间所在年份少一年,同时当前时间所在月份是当年最后一个月(12月),同时两个日期在同一年中的周数相等。
if (subYear == -1 && nowCal.get(Calendar.MONTH) == 11
&& nowCal.get(Calendar.WEEK_OF_YEAR) == appointCal.get(Calendar.WEEK_OF_YEAR)) {
return true;
}
return false;
}
/**
* 判断指定时间与当前时间是否处于同一自然月
* @author yuan.yu
* @date 2017-7-26
* @description
* @param appointDate
* @return
*/
public static boolean theSameMonth(Date appointDate) {
Calendar appointCal = Calendar.getInstance();
Calendar nowCal = Calendar.getInstance();
appointCal.setTime(appointDate);
return appointCal.get(Calendar.YEAR) == nowCal.get(Calendar.YEAR)
&& appointCal.get(Calendar.MONTH) == nowCal.get(Calendar.MONTH);
}
/**
* 判断两个指定的时间是否在同一自然月
* @author yuan.yu
* @date 2017-7-26
* @description
* @param appointDate
* @param anotherAppointDate
* @return
*/
public static boolean theSameMonth(Date appointDate, Date anotherAppointDate) {
Calendar appointCal = Calendar.getInstance();
Calendar anotherCal = Calendar.getInstance();
appointCal.setTime(appointDate);
appointCal.setTime(anotherAppointDate);
return appointCal.get(Calendar.YEAR) == anotherCal.get(Calendar.YEAR)
&& appointCal.get(Calendar.MONTH) == anotherCal.get(Calendar.MONTH);
}
}
阅读全文
0 0
- 【Android工具】时间工具类
- 时间计算工具类
- 时间工具类
- 时间工具类
- java时间工具类
- java 时间工具类
- 时间工具类[DateUtil]
- 时间工具类(DateUtil)
- 时间工具类(DateUtil)
- Java时间工具类
- Java时间工具类
- JS时间工具类
- 日期时间工具类
- PHP时间工具类
- 时间工具类
- 时间工具类
- 时间处理工具类
- 时间工具类(DateUtil)
- HDU6170 Two strings dp 多校联赛第9场
- Linux学习(四):Linux文件系统及其shell命令
- 设置Xshell连不上CentOS虚拟机
- jdbc简单的使用
- mysql导入数据库出现异常(数据库字符集问题),如何解决??
- 时间工具类
- uva 10003 lrj-P278 区间dp入门
- Invade the Mars HDU
- 树上倍增解析(转载)
- Windows——JDK安装与环境变量配置
- ConcurrentHashMap总结
- Selenium怎样搭配TestNG
- jediscluster工具类
- 重写memcpy函数