您的位置:首页 > 编程语言 > Java开发

JAVA Date 工具类 常用

2017-12-05 10:37 211 查看
相信大家在写代码的过程中,会经常遇到日期和字符串之间的格式转换和求日期的需求。

因此我今天整理了一下普遍常用的一些方法,希望可以帮助大家。如果有不对的地方希望指正,有遗漏也请留言提出。

package slpcb;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

/**
*
* 项目名称:testClass
* 类名称:DateUtils
* 类描述:
* 创建人:Jie.xiaojun
* 创建时间:2017-12-4 下午04:20:02
*/
public class DateUtils {

/**
* 字符串格式:yyyy-MM-dd HH:mm:ss.sss
*/
public static final String formatter_yyyyMMddHHmmsssss = "yyyy-MM-dd HH:mm:ss.sss";
/**
* 字符串格式:yyyy-MM-dd HH:mm:ss
*/
public static final String formatter_yyyyMMddHHmmss = "yyyy-MM-dd HH:mm:ss";
/**
* 字符串格式:yyyy-MM-dd HH:mm
*/
public static final String formatter_yyyyMMddHHmm = "yyyy-MM-dd HH:mm";
/**
* 字符串格式:yyyy-MM-dd
*/
public static final String formatter_yyyyMMdd = "yyyy-MM-dd";
/**
* 字符串格式:yyyy-MM
*/
public static final String formatter_yyyyMM = "yyyy-MM";
/**
* 字符串格式:yyyy
*/
public static final String formatter_yyyy = "yyyy";
/**
* 字符串格式:MM-dd
*/
public static final String formatter_MMdd = "MM-dd";
/**
* 字符串格式:HH:mm:ss
*/
public static final String formatter_HHmmss = "HH:mm:ss";
/**
* 字符串格式:HH:mm
*/
public static final String formatter_HHmm = "HH:mm";
/**
* 字符串格式:返回星期X(一、二、三、四、五、六、日)
*/
public static final String formatter_EEEE = "EEEE";

public static void main(String args[])
{
// System.out.println(dateToString(new Date(), formatter_yyyyMMddHHmmss));
// System.out.println(stringtoDate("2017-10-01 12:00", formatter_yyyyMMddHHmm));
// System.out.println(getCurrentDate(formatter_yyyyMMddHHmmss));
// System.out.println(getFirstDayOfMonth(new Date(), formatter_yyyyMMddHHmmss, 0));
// System.out.println(getFirstDayOfMonth(new Date(), formatter_yyyyMMddHHmmss, -12));
// System.out.println(getFirstDayOfMonth(new Date(), formatter_yyyyMMddHHmmss, 1));
// System.out.println(getLastDayOfMonth(new Date(), formatter_yyyyMMddHHmmss, 0));
// System.out.println(getLastDayOfMonth(new Date(), formatter_yyyyMMddHHmmss, -12));
// System.out.println(getLastDayOfMonth(new Date(), formatter_yyyyMMddHHmmss, 1));
// System.out.println(getLastDayOfMonth(new Date(), formatter_yyyyMMddHHmmss,2));
// System.out.println(getHourByDate(date));
// System.out.println(getDayByDate(date));
// System.out.println(getMonthByDate(date));
// System.out.println(getYearByDate(date));
// System.out.println(daysBetween("2017-11-06 23:59:59","2017-11-07 00:00:00",formatter_yyyyMMdd));
// System.out.println(minutesBetweenFloat("2017-11-07 23:57:59","2017-11-07 23:58:00",formatter_yyyyMMddHHmmss));
// System.out.println(minutesBetweenInt("2017-11-07 23:57:00","2017-11-07 23:58:00",formatter_yyyyMMddHHmmss));
// System.out.println(hoursBetween("2017-11-07 22:58:00", "2017-11-07 23:57:00", formatter_yyyyMMddHHmmss));
// System.out.println(getNewDateStr("2017-10-31 01:00", formatter_yyyyMMddHHmm, 500, "day"));
}

/**
* @Description: 将日期转换为指定格式的字符串
* @param @param date
* @param @param format
* @param @return
* @return String
* @author Jie.xiaojun
* @date 2017-12-4 下午03:58:17
*/
public static String dateToString(java.util.Date date, String format){
String result = "";
SimpleDateFormat formater = new SimpleDateFormat(format);
try {
result = formater.format(date);
} catch (Exception e) {
}
return result;
}

/**
*
* @Description: 将指定格式的字符串转换为日期
* @param dateStr
* @param format
* @return java.util.Date
* @author Jie.xiaojun
* @date 2017-12-4 下午04:18:06
*/
public static java.util.Date stringtoDate(String dateStr, String format) {
SimpleDateFormat formater = new SimpleDateFormat(format);
try {
formater.setLenient(false);
return formater.parse(dateStr);
} catch (Exception e) {
return null;
}
}

/**
*
* @Description: 获取当前时间的指定格式的字符串
* @param format
* @return String
* @author Jie.xiaojun
* @date 2017-12-4 下午05:22:04
*/
public static String getCurrentDate(String format) {
return dateToString(new Date(), format);
}

/**
*
* @Description: 获取给定时间第几个月第一天的指定格式字符串
* @param date
* @param format
* @param month
* @return String
* @author Jie.xiaojun
* @date 2017-12-5 上午08:18:27
*/
public static String getFirstDayOfMonth(Date date, String format, int month) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, month);
cal.set(Calendar.DATE, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
return dateToString(cal.getTime(), format);
}

/**
*
* @Description: 获取给定时间第几个月最后一天的指定格式字符串
* @param date
* @param format
* @return String
* @author Jie.xiaojun
* @date 2017-12-5 上午08:29:48
*/
public static String getLastDayOfMonth(Date date, String format,int month) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DATE, 1);
cal.add(Calendar.MONTH, 1);
cal.add(Calendar.DATE, -1);
cal.add(Calendar.MONTH, month);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
return dateToString(cal.getTime(), format);
}

/**
*
* @Description: 求指定日期的小时数(0到23)
* @param date
* @return int
* @author Jie.xiaojun
* @date 2017-12-5 上午08:51:03
*/
public static int getHourByDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.HOUR_OF_DAY);
}

/**
*
* @Description: 求指定日期是一个月中第几天(1到31)
* @param date
* @return int
* @author Jie.xiaojun
* @date 2017-12-5 上午08:46:32
*/
public static int getDayByDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DATE);
}

/**
*
* @Description: 求指定日期是一年中第几月(1到12)
* @param date
* @return int
* @author Jie.xiaojun
* @date 2017-12-5 上午08:48:39
*/
public static int getMonthByDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.MONTH) + 1;
}

/**
*
* @Description: 求指定日期的年
* @param date
* @return int
* @author Jie.xiaojun
* @date 2017-12-5 上午08:49:50
*/
public static int getYearByDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.YEAR);
}

/**
*
* @Description: 返回两个指定字符串格式的日期相差天数
* @param startDate
* @param endDate
* @param format
* @return int
* @author Jie.xiaojun
* @date 2017-12-5 上午09:30:58
*/
public static int daysBetween(String startDate,String endDate,String format){
Calendar cal = Calendar.getInstance();
cal.setTime(stringtoDate(startDate, format));
long time1 = cal.getTimeInMillis();
cal.setTime(stringtoDate(endDate, format));
long time2 = cal.getTimeInMillis();
long between_days=Math.abs((time2-time1)/(1000*3600*24));
return Integer.parseInt(String.valueOf(between_days));
}

/**
*
* @Description: 获取两个时间之间的小时差(时间格式必须是yyyy-MM-dd HH yyyy-MM-dd HH:mm yyyy-MM-dd HH:mm:ss yyyy-MM-dd HH:mm:ss.sss)
* @param startDate
* @param endDate
* @param format
* @return float
* @author Jie.xiaojun
* @date 2017-12-5 上午10:06:35
*/
public static float hoursBetween(String startDate,String endDate,String format){
Calendar cal = Calendar.getInstance();
cal.setTime(stringtoDate(startDate, format));
long time1 = cal.getTimeInMillis();
cal.setTime(stringtoDate(endDate, format));
long time2 = cal.getTimeInMillis();
float between_hours=(float) ((time2-time1)/(1000*3600.0));
return between_hours;
}

/**
*
* @Description: 获取两个时间之间的分钟差(时间格式必须是yyyy-MM-dd HH:mm yyyy-MM-dd HH:mm:ss yyyy-MM-dd HH:mm:ss.sss)
* @param startDate
* @param endDate
* @param format
* @return float
* @author Jie.xiaojun
* @date 2017-12-5 上午10:04:11
*/
public static float minutesBetweenFloat(String startDate,String endDate,String format){
Calendar cal = Calendar.getInstance();
cal.setTime(stringtoDate(startDate, format));
long time1 = cal.getTimeInMillis();
cal.setTime(stringtoDate(endDate, format));
long time2 = cal.getTimeInMillis();
float between_minutes=(float) ((time2-time1)/(1000*60.0));
return between_minutes;
}

/**
*
* @Description: 获取两个时间之间的分钟差(时间格式必须是yyyy-MM-dd HH:mm yyyy-MM-dd HH:mm:ss yyyy-MM-dd HH:mm:ss.sss)
* @param startDate
* @param endDate
* @param format
* @return int
* @author Jie.xiaojun
* @date 2017-12-5 上午10:02:59
*/
public static int minutesBetweenInt(String startDate,String endDate,String format){
Calendar cal = Calendar.getInstance();
cal.setTime(stringtoDate(startDate, format));
long time1 = cal.getTimeInMillis();
cal.setTime(stringtoDate(endDate, format));
long time2 = cal.getTimeInMillis();
long between_minutes=Math.abs((time2-time1)/(1000*60));
return Integer.parseInt(String.valueOf(between_minutes));
}

/**
*
* @Description: 求指定字符串格式的天数或月份加减
* @param dateStr
* @param format 常用格式:yyyy-MM-dd HH:mm:ss&&yyyy-MM-dd
* @param counts
* @param type month or day
* @return String
* @author Jie.xiaojun
* @date 2017-12-5 上午10:14:25
*/
public static String getNewDateStr(String dateStr,String format,int counts,String type){
Calendar cal = Calendar.getInstance();
cal.setTime(stringtoDate(dateStr, format));
if(type!=null&&type.equals("day"))
{
cal.add(Calendar.DAY_OF_YEAR, counts);
}
if(type!=null&&type.equals("month"))
{
cal.add(Calendar.MONTH, counts);
}
String newDateStr= dateToString(cal.getTime(), format);
return newDateStr;
}

/**
*
* @Description: 比较字符串是否和格式完全相同
* @param str
* @param format
* @return boolean
* @author Jie.xiaojun
* @date 2017-12-4 下午05:07:09
*/
public static boolean isSameFormat(String str,String format) {
boolean convertSuccess=true;
SimpleDateFormat formater = new SimpleDateFormat(format);
try {
formater.setLenient(false);
try {
formater.parse(str);
} catch (java.text.ParseException e) {
convertSuccess=false;
}
} catch (ParseException e) {
convertSuccess=false;
}
return convertSuccess;
}

/**
*
* @Description: 比较字符串是否和格式类似相同
* @param str
* @param format
* @return boolean
* @author Jie.xiaojun
* @date 2017-12-4 下午05:07:09
*/
public static boolean isLikeFormat(String str,String format) {
boolean convertSuccess=true;
SimpleDateFormat formater = new SimpleDateFormat(format);
try {
formater.setLenient(true);
try {
formater.parse(str);
} catch (java.text.ParseException e) {
convertSuccess=false;
}
} catch (ParseException e) {
convertSuccess=false;
}
return convertSuccess;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA Date SimpleDateFormat