主要是自己日常用到的日期处理类,在结合网上朋友们写的日期处理类,整理了一下日期工具类。共享出来,大家如果有能用到的,可以用啊。
package com.chd.util;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
*
* 日期处理工具类
* @category:工具类
* @author chd
* @version 1.0 ,Jun 1, 2010
*/
public class DateUtil {
/**
*
* 求日期的下一天
* @param 字符串格式的日期
* @return 返回 日期下一天的日期
* @exception 异常描述
*/
@SuppressWarnings("unused")
private static String nextDayAfterDate(String date){
String[] current = date.split("-");
//分隔字符串格式的日期
int year = Integer.parseInt(current[0]);
int month =Integer.parseInt(current[1]);
int day = Integer.parseInt(current[2]);
//如果日数少于该月的最大天数,天数加一天
if(day < DateUtil.maxDay(year, month)){
day++;
}else{
//如果月份少于12,则月份加一个月
if(month < 12){
month++;
}else{
//如果月份大于等于12,则月份置1,年份加1年
month = 1;
year++;
}
//如果日数超过该月的天数,天数置1
day = 1 ;
}
//计算出处理后的日期
date =year+"-"+DateUtil.formatData(month)+"-"+DateUtil.formatData(day);
return date;
}
/**
*
* 日期数据格式的处理
* @param 整型 data
* @return 返回String类型的新数据
* @exception 异常描述
*/
private static String formatData(int data){
//如果数字小于10,数字前加0
if(data < 10){
return "0"+data;
}else{
return data+"";
}
}
/**
*
* 判断是否是闰年
* @param 整型 year
* @return 返回 boolean
* @exception 异常描述
*/
private static boolean isLeap(int year){
//如果是闰年返回true,否则为false
if(year%4==0 && year%100!=0 ||year%400==0){
return true;
}
else{
return false;
}
}
/**
*
* 求一个月的最大一天
* @param 年,月
* @return 返回 整型天数
* @exception 异常描述
*/
private static int maxDay(int year,int month)
{
//初始化12个月份的天数
int[] months={31,0,31,30,31,30,31,31,30,31,30,31};
//如果不是2月则返回该月份的天数
if(month!=2){
return months[month-1];
}
else{
//如果是闰年返回为29天,否则28天
if(isLeap(year)){
return 29;
}
else{
return 28;
}
}
}
/**
*
* 比较两个字符串的日期的大小
* @param 两个日期
* @return 返回 boolean
* @exception 异常描述
*/
@SuppressWarnings("unused")
private static boolean compareToDate(String dateFrom,String dateTo){
//如果开始日期小于等于结束日期返回为true,否则为false
if(dateFrom.compareTo(dateTo) <= 0){
return true;
}
return false;
}
/**
*
* 由日历获取星期几
* @param 年,月,日
* @return 返回整型星期 1:星期日;2:星期一;3:星期二;4:星期三;5:星期四;6:星期五;7:星期六;
* @exception 异常描述
*/
@SuppressWarnings("unused")
private static int getWeekValue(int year,int month,int day){
//实例化Calendar
Calendar now = Calendar.getInstance();
//设置某年某月某日的参数
now.set(Calendar.YEAR, year);
now.set(Calendar.MONTH, month-1);
now.set(Calendar.DATE, day);
return now.get(Calendar.DAY_OF_WEEK);
}
public enum DateFormatType {
/**
* 格式为:yyyy-MM-dd HH:mm:ss
*/
DATE_FORMAT_STR("yyyy-MM-dd HH:mm:ss"),
/**
* 格式为:yyyyMMddHHmmss
*/
SIMPLE_DATE_TIME_FORMAT_STR("yyyyMMddHHmmss"),
/**
* 格式为:yyyy-MM-dd
*/
SIMPLE_DATE_FORMAT_STR("yyyy-MM-dd"),
/**
* 格式为:yyyy/MM/dd
*/
SIMPLE_DATE_FORMAT_VIRGULE_STR("yyyy/MM/dd"),
/**
* 格式为:HH:mm:ss
*/
HOUR_MINUTE_SECOND("HH:mm:ss"),
/**
* 格式为:HH:mm
*/
HOUR_MINUTE("HH:mm");
private final String value;
DateFormatType(String formatStr) {
this.value = formatStr;
}
public String getValue() {
return value;
}
}
/**
* 获取当前时间日期的字符串
*/
public static String getCurrentDateStr(DateFormatType dateFormatType) {
Date date = getCurrentDate();
return (String) OpearationDate(date, dateFormatType.getValue());
}
/**
* 时间、日期格式化成字符串
*/
public static String formatDate(Date date, DateFormatType dateFormatType) {
return (String) OpearationDate(date, dateFormatType.getValue());
}
/**
* 从字符串解析成时间、日期
*/
public static Date parseDate(String dateStr, DateFormatType dateFormatType) {
return (Date) OpearationDate(dateStr, dateFormatType.getValue());
}
/**
* 获取当前系统时间(原始格式)
*/
public static Date getCurrentDate() {
Date date = new Date(System.currentTimeMillis());
return date;
}
/**
* 获取当前日期的年、月、日、时、分、秒
*/
public static int getCurrentTime(TimeFormatType timeFormatType) {
return getTime(getCurrentDate(), timeFormatType);
}
/**
* 获取指定日期的年、月、日、时、分、秒
*/
public static int getTime(Date date, TimeFormatType timeFormatType) {
try {
Calendar c = Calendar.getInstance();
c.setTime(date);
int type = timeFormatType.getValue();
int i = c.get(type);
return type == 2 ? i + 1 : i;
} catch (Exception e) {
throw new RuntimeException("获取失败", e);
}
}
/**
* 获取指定日期的毫秒数
*/
public static long getMillis(Date date) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
/**
* 日期相加、减操作
*
* 所返回结果单位为:天数
*/
public static int operationDate(Date date, Date diffDate, DateOperationType dateOperationType) {
long add = getMillis(date) + getMillis(diffDate);
long diff = getMillis(date) - getMillis(diffDate);
return (int) ((dateOperationType.getValue() ? add : diff) / (24 * 3600 * 1000));
}
/**
* 日期月份相加、减操作
*/
public static Date operationDateOfMonth(Date date, int month, DateOperationType dateOperationType) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.MONTH, dateOperationType.getValue() ? month : month - (month * 2));
return c.getTime();
}
/**
* 日期天数相加、减操作
*/
public static Date operationDateOfDay(Date date, int day, DateOperationType dateOperationType) {
Calendar c = Calendar.getInstance();
c.setTime(date);
long millis = c.getTimeInMillis();
long millisOfday = day * 24 * 3600 * 1000;
long sumMillis = dateOperationType.getValue() ? (millis + millisOfday) : (millis - millisOfday);
c.setTimeInMillis(sumMillis);
return c.getTime();
}
private static Object OpearationDate(Object object, String formatStr) {
if (object == null || null == formatStr || "".equals(formatStr)) {
throw new RuntimeException("参数不能为空");
}
SimpleDateFormat format = new SimpleDateFormat(formatStr);
try {
if (object instanceof Date)
return format.format(object);
else
return format.parse(object.toString());
} catch (Exception e) {
throw new RuntimeException("操作失败", e);
}
}
public enum DateOperationType {
/**
* 加操作
*/
ADD(true),
/**
* 减操作
*/
DIFF(false);
private final boolean value;
DateOperationType(boolean operation) {
this.value = operation;
}
public boolean getValue() {
return value;
}
}
public enum TimeFormatType {
YEAR(1), MONTH(2), DAY(5), HOUR(11), MINUTE(12), SECOND(13);
private final int value;
TimeFormatType(int formatStr) {
this.value = formatStr;
}
public int getValue() {
return value;
}
}
}
分享到:
相关推荐
Java日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 6、获取上个月("MMM yyyy") 7、获取上个月("yyyymm") 8、获取上个月("yyyy-mm") 9、...
java日期工具类,java日期工具类,java日期工具类,java日期工具类
DateUtils(日期工具类),包含日期格式化,解析等。
日期工具类
根据提供的文件信息,本文将对日期工具类进行深入解析,并详细介绍其包含的主要功能与实现方法。此工具类主要涉及到了日期格式化、日期解析、获取当前时间等实用操作。 ### 一、概述 该日期工具类名为 `DateUtil`...
强大的好用的原创日期工具类: 1.返回当前日期字符串 yyyy-MM-dd 2.返回当前日期字符串 yyyy-MM-dd HH:mm:ss 3.根据指定时间格式解析日期字符串为Date对象 4.根据默认时间格式解析日期字符串为Date对象 5.根据指定...
Java日期工具类是Java开发中不可或缺的一部分,它们用于处理日期和时间相关的操作。在Java中,日期和时间处理涉及到多个类和接口,如`java.util.Date`、`java.util.Calendar`、`java.text.SimpleDateFormat`以及Java...
本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...
各种你能想到的日期计算,操作。包含常见的年月日间隔计算、比较、格式化
`时间日期工具类`是提升开发效率的关键,它们提供了对日期和时间进行格式化、比较、计算等操作的便捷方法。在这个"时间日期工具类(包含java8新特性).zip"压缩包中,我们有两个文件:DateUtil.java和DateUtils.java...