package com.wj.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class DateUtil {
/**
* @return 返回系统当前时间
*/
public static Date getCurrentDate(){
return Calendar.getInstance().getTime() ;
}
/**
* 根据格式获取当前时间
* @param format
* @return
*/
public static String getTimeOfNow(String format){
SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);
return sdf.format(new Date());
}
/**
* 根据格式获取本周一的开始时间
*
* @return
*/
public static String getFirstDayOfWeek(String format){
SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);
Calendar cal = Calendar.getInstance(Locale.CHINA);
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setTimeInMillis(System.currentTimeMillis());
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return sdf.format(cal.getTime());
}
/**
* 根据格式获取本周末的结束时间
* @return
*/
public static String getLastDayOfWeek(String format){
SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);
Calendar cal = Calendar.getInstance(Locale.CHINA);
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setTimeInMillis(System.currentTimeMillis());
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return sdf.format(cal.getTime());
}
/**
* 时间格式的转换
* @param dateStr
* @param oldFormat
* @param newFormat
* @return
* @throws ParseException
*/
public static String reverseDateFormat(String dateStr,String oldFormat,String newFormat) throws ParseException{
Date date = new SimpleDateFormat(oldFormat,Locale.CHINA).parse(dateStr);
return new SimpleDateFormat(newFormat,Locale.CHINA).format(date);
}
/**
* 将当天时间加上或减去若干天 按格式返回
* @param format 格式
* @param num 天数
* @return
*/
public static String getAfterDay(String format,int num){
SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);
Calendar cal = Calendar.getInstance(Locale.CHINA);
cal.add(Calendar.DAY_OF_WEEK, num);
return sdf.format(cal.getTime());
}
/**
* 将特定时间加上或减去若干天 按格式返回
* @param format 格式
* @param num 天数
* @return
*/
public static String getAfterSpecificDay(String timeStr,String format,int num){
SimpleDateFormat sdf=new SimpleDateFormat(format);
Calendar cal = Calendar.getInstance(Locale.CHINA);
Date date=null;
try {
date = sdf.parse(timeStr);
} catch (ParseException e) {
e.printStackTrace();
}
cal.setTime(date);
cal.add(Calendar.DAY_OF_WEEK, num);
return sdf.format(cal.getTime());
}
/**
* 将当天时间加上或减去若干月 按格式返回
* @param format 格式
* @param num 天数
* @return
*/
public static String getAfterMonth(String format,int num){
SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);
Calendar cal = Calendar.getInstance(Locale.CHINA);
cal.add(Calendar.MONTH, num);
return sdf.format(cal.getTime());
}
/**
* 将当天时间加上或减去若干年 按格式返回
* @param format 格式
* @param num 天数
* @return
*/
public static String getAfterYear(String format,int num){
SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);
Calendar cal = Calendar.getInstance(Locale.CHINA);
cal.add(Calendar.YEAR, num);
return sdf.format(cal.getTime());
}
/**
* 比较2个日期字符串的大小
* @param dateStr1
* @param dateStr2
* @param format1
* @param format2
* @return 1:dateStr1>dateStr2
* 0: dateStr1=dateStr2
* -1: dateStr1<dateStr2
*/
public static int dateStringCompare(String dateStr1,String dateStr2,String format1,String format2){
SimpleDateFormat sdf1 = new SimpleDateFormat(format1,Locale.CHINA);
SimpleDateFormat sdf2 = new SimpleDateFormat(format2,Locale.CHINA);
Calendar cal1 = Calendar.getInstance(Locale.CHINA);
Calendar cal2 = Calendar.getInstance(Locale.CHINA);
Date date1 = null;
Date date2 = null;
try {
date1 = sdf1.parse(dateStr1);
date2 = sdf2.parse(dateStr2);
} catch (ParseException e) {
e.printStackTrace();
}
cal1.setTime(date1);
cal2.setTime(date2);
return cal1.compareTo(cal2);
}
/**
* 计算2个日期的间隔天数
* @param t1
* @param t2
* @return
* @throws ParseException
*/
public static int getBetweenDays(String t1,String t2,String format1,String format2) {
SimpleDateFormat sdf1 = new SimpleDateFormat(format1);
SimpleDateFormat sdf2 = new SimpleDateFormat(format2);
int betweenDays = 0;
Date d1 = null;
Date d2 = null;
try {
d1 = sdf1.parse(t1);
d2 = sdf2.parse(t2);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(d1);
c2.setTime(d2);
// 保证第二个时间一定大于第一个时间
if(c1.after(c2)){
c1.setTime(d2);
c2.setTime(d1);
}
int betweenYears = c2.get(Calendar.YEAR)-c1.get(Calendar.YEAR);
betweenDays = c2.get(Calendar.DAY_OF_YEAR)-c1.get(Calendar.DAY_OF_YEAR);
for(int i=0;i<betweenYears;i++){
c1.set(Calendar.YEAR,(c1.get(Calendar.YEAR)+1));
betweenDays += c1.getMaximum(Calendar.DAY_OF_YEAR);
}
return betweenDays+1;
}
/**
* 获取指定月份的天数
* @param yearMonth年月
* @param format格式
* @return
*/
public static int getDaysOfMonth(String yearMonth,String format){
int dayNum = 0;
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date date = null;
try {
date = sdf.parse(yearMonth);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
dayNum = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
return dayNum;
}
public static void main(String []args) throws ParseException{
System.out.println(new DateUtil().getTimeOfNow("yyyy/MM/dd HH:mm:ss"));
System.out.println(new DateUtil().getFirstDayOfWeek("yyyy/MM/dd")+" 00:00:00");
System.out.println(new DateUtil().getLastDayOfWeek("yyyy-MM-dd")+" 23:59:59");
System.out.println(new DateUtil().reverseDateFormat("2012-07-06", "yyyy-MM-dd","yyyy/MM/dd"));
System.out.println(new DateUtil().getAfterDay("yyyy/MM/dd", 4));
System.out.println(new DateUtil().getAfterMonth("yyyy/MM/dd", 4));
System.out.println(new DateUtil().getAfterYear("yyyy/MM/dd", 4));
System.out.println(new DateUtil().getAfterSpecificDay("2112/9/9", "yyyy/MM/dd", 10));
System.out.println(new DateUtil().dateStringCompare(new DateUtil().getTimeOfNow("yyyy-MM-dd"), "2012/10/17", "yyyy-MM-dd", "yyyy/MM/dd"));
System.out.println(new DateUtil().getBetweenDays("2116-9-1", "2115/9/9","yyyy-MM-dd", "yyyy/MM/dd"));
System.out.println(new DateUtil().getDaysOfMonth("2012-8", "yyyy-MM"));
}
}
java常用日期操作
最新推荐文章于 2023-04-07 11:23:31 发布