package util;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Random;
public class DateUtil {
/**
* 将String类型的日期转成date
* @param date
* @return
*/
public static Date string2Date(String date,String format)
{
SimpleDateFormat df=new SimpleDateFormat(format);
try {
return df.parse(date);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* 计算两个日期相差天数
* @param startDate 开始日期,格式为yyyyMMdd,不能有时分秒
* @param endDate
* @return
*/
public static long dateMinus(Date startDate,Date endDate)
{
return (endDate.getTime()-startDate.getTime())/(24*60*60*1000);
}
/**
* 计算日期加指定天数后所得日期
* @param date 原始日期
* @param day 所加天数(负数时为减)
* @return
*/
public static Date sumDate(Date date,int day)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// System.out.println(calendar.get(Calendar.DAY_OF_MONTH));// 今天的日期
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + day);// 让日期加1
// System.out.println(calendar.get(Calendar.DATE));// 加1之后的日期Top
return calendar.getTime();
}
/**
* 计算日期减指定天数后所得日期
* @param date 原始日期
* @param day 所加天数(负数时为减)
* @return
*/
public static Date subDate(Date date,int day)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) - day);// 让日期加1
return calendar.getTime();
}
/**
* 获取前一个月
* @param date
* @return
*/
public static String getPreviousMonth(Date date)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);// 让日期加1
SimpleDateFormat df=new SimpleDateFormat("yyyyMM");
return df.format(calendar.getTime());
}
/**
* 获取指定月天数
* @param month yyyyMM
* @return
*/
public static int getMonthDays(String month){
Calendar cal = new GregorianCalendar();
//或者用Calendar cal = Calendar.getInstance();
/**设置date**/
SimpleDateFormat oSdf = new SimpleDateFormat ("yyyyMM");
try {
cal.setTime(oSdf.parse(month));
} catch (ParseException e) {
e.printStackTrace();
}
/**开始用的这个方法获取实际月的最大天数**/
int num2 = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
return num2;
}
public static String getRandomDate(int num){
Random rd = new Random();
String res = String.valueOf(System.currentTimeMillis());
for(int i=0; i<num;i++){
res = res + rd.nextInt(9);
}
return res;
}
/**
* 计算date1和date2相差的秒数(date1-date2)
* @param date1
* @param date2
* @return
*/
public static long subDate(Date date1,Date date2){
long l = date1.getTime()-date2.getTime()>0 ? date1.getTime()-date2.getTime():
date2.getTime()-date1.getTime();
return l/1000;
}
/**
* 得到当前日期前后几月的某一日期
* @param dateFormat 时间格式
* @param monthNum 1月前:-1,1月后:1
* @return
*/
public static String getMonthTime(String dateFormat,int monthNum){
Calendar currTime = GregorianCalendar.getInstance();
DateFormat bdf = new SimpleDateFormat(dateFormat);
currTime.add(Calendar.MONTH, monthNum);
Date date = currTime.getTime();
String time = bdf.format(date);
return time;
}
/**
* 将date转成string
* @param date 需转换的日期
* @param dateFormat 日期格式 如yyyy-MM-dd HH:mm:ss S
* @return
*/
public static String date2String(Date date,String dateFormat)
{
SimpleDateFormat df=new SimpleDateFormat(dateFormat);
try {
return df.format(date);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 取指定月份最后一天
*
* @param year
* @param month
* @return
*/
public static String getLastDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month + 1);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
return new SimpleDateFormat("yyyy-MM-dd ").format(cal.getTime());
}
/**
* 取指定月份的第一天
*
* @param year
* @param month
* @return
*/
public static String getFirstDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month + 1);
cal.set(Calendar.DAY_OF_MONTH, cal.getMinimum(Calendar.DATE));
return new SimpleDateFormat("yyyy-MM-dd ").format(cal.getTime());
}
/**
* 指定日志是否该月最后一天
*
* @param date
* @return
*/
public static boolean isLastDayOfMonth(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.DAY_OF_MONTH) == cal.getActualMaximum(Calendar.DATE);
}
public static void main(String[] args) {
String date="201212121212120";
Date date2=DateUtil.string2Date(date, "yyyyMMddHHmmssS");
System.out.println(DateUtil.date2String(date2, "yyyyMMddHH:mm:ss SSS"));
}
}
Date操作工具类
最新推荐文章于 2023-07-06 22:48:21 发布