本文实例为大家分享了java日期操作工具类,获取指定日期前一天、后一天;日期转换;两个日期之间相隔天数等工具类,供大家参考,具体内容如下
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class DateUtil {
public static Date getDayBefore(Date date, String format) {
Calendar c = Calendar.getInstance();
c.setTime(date);
int day = c.get(Calendar.DATE);
c.set(Calendar.DATE, day - 1);
String dayBeforeStr = new SimpleDateFormat(format).format(c.getTime());
Date dayBefore = null;
try {
dayBefore = new SimpleDateFormat(format).parse(dayBeforeStr);
} catch (ParseException e) {
e.printStackTrace();
}
return dayBefore;
}
public static Date getDayAfter(Date date, String format) {
Calendar c = Calendar.getInstance();
c.setTime(date);
int day = c.get(Calendar.DATE);
c.set(Calendar.DATE, day + 1);
String dayAfterStr = new SimpleDateFormat(format).format(c.getTime());
Date dayAfter = null;
try {
dayAfter = new SimpleDateFormat(format).parse(dayAfterStr);
} catch (ParseException e) {
e.printStackTrace();
}
return dayAfter;
}
public static String getSpecifiedDayBefore(String specifiedDay, String format) {
// SimpleDateFormat simpleDateFormat = new
// SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date date = null;
try {
date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(date);
int day = c.get(Calendar.DATE);
c.set(Calendar.DATE, day - 1);
String dayBefore = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
return dayBefore;
}
public static String getSpecifiedDayAfter(String specifiedDay, String format) {
Calendar c = Calendar.getInstance();
Date date = null;
try {
// date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
date = new SimpleDateFormat(format).parse(specifiedDay);
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(date);
int day = c.get(Calendar.DATE);
c.set(Calendar.DATE, day + 1);
// String dayAfter=new
// SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
String dayAfter = new SimpleDateFormat(format).format(c.getTime());
return dayAfter;
}
public static String date2String(Date day, String format) {
String dateStr = new SimpleDateFormat(format).format(day.getTime());
return dateStr;
}
public static Date string2Date(String dateStr,String format) {
Date strDate = null;
try {
strDate = new SimpleDateFormat(format).parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return strDate;
}
public static boolean DateDate2Comparevalue(Date dayAfter, Date date, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
try {
Date d1 = sdf.parse(sdf.format(dayAfter));
Date d2 = sdf.parse(sdf.format(date));
if(d1.getTime()>=d2.getTime()){
return true;
}
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}
public static boolean DateStrDateComparevalue(String date1, Date date, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
try {
Date d1 = sdf.parse(date1);
Date d2 = sdf.parse(sdf.format(date));
if(d1.getTime()>=d2.getTime()){
return true;
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
@SuppressWarnings("unused")
public static boolean DateStr2Comparevalue(String date1, String date2,String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
try {
Date d1 = sdf.parse(date1);
Date d2 = sdf.parse(date2);
if(d1.getTime()>=d2.getTime()){
return true;
}
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}
public static List get2DateListDate(String preDate, String nextDate, String format) {
List list = new ArrayList<>();
if(nextDate.equals(preDate)){//开始时间 结束时间相等就直接返回
list.add(DateUtil.string2Date(preDate, format));
return list;
}
String nexDate = DateUtil.getSpecifiedDayAfter(preDate, format);
list.add(DateUtil.string2Date(preDate, format));
list.add(DateUtil.string2Date(nexDate, format));
while (!nexDate.equals(nextDate)) {
String nextnextDate = DateUtil.getSpecifiedDayAfter(nexDate, format);
list.add(DateUtil.string2Date(nextnextDate, format));
nexDate = nextnextDate;
}
return list;
}
public static List get2DateListDateStr(String preDate, String nextDate, String format) {
List list = new ArrayList<>();
if(nextDate.equals(preDate)){//如果开始时间等于结束时间那么就是同一天
list.add(preDate);
return list;
}
String nexDate = DateUtil.getSpecifiedDayAfter(preDate, format);
list.add(preDate);
list.add(nexDate);
while (!nexDate.equals(nextDate)) {
String nextnextDate = DateUtil.getSpecifiedDayAfter(nexDate, format);
list.add(nextnextDate);
nexDate = nextnextDate;
}
return list;
}
public static List get2DateListWithDate(Date startDate, Date endDate,String format) {
List list = new ArrayList<>();
if(startDate.getTime() >endDate.getTime()){
return list;
}
String startDateStr = DateUtil.date2String(startDate, format);
String endDateStr = DateUtil.date2String(endDate, format);
if(startDateStr.equals(endDateStr)){//如果开始时间等于结束时间那么就是同一天
list.add(startDate);
return list;
}
Date nextDate = DateUtil.getDayAfter(startDate, format);
String nextDateStr = DateUtil.date2String(nextDate, format);
//String endDateStr = DateUtil.date2String(endDate, format);
list.add(startDate);
list.add(nextDate);
while (!nextDateStr.equals(endDateStr)) {
String nextnextDate = DateUtil.getSpecifiedDayAfter(nextDateStr, format);
list.add(DateUtil.string2Date(nextnextDate, format));
nextDateStr = nextnextDate;
}
return list;
}
public static void main(String[] args) throws Exception {
String preDate = getSpecifiedDayBefore("2016-05-01", "yyyy-MM-dd");
String nextDate = getSpecifiedDayAfter("2016-05-03", "yyyy-MM-dd");
Date befroDay = getDayBefore(new Date(), "yyyy-MM-dd");
Date dateAfter = getDayAfter(new Date(), "yyyy-MM-dd");
// System.out.println("前一天:" + preDate + " 后一天:" + nextDate);
// System.err.println("前一天:" +date2String( befroDay ,"yyyy-MM-dd")+ "
// 后一天:" + dateAfter);
String mat = "yyyy-MM-dd";// 这里最好从数据库中读取
SimpleDateFormat dateTimeFormat = new SimpleDateFormat(mat);
Date dd = DateUtil.getDayBefore(new Date(), mat);
// Date befroDay = getDayBefore(new Date(), "yyyy-MM-dd");
String sd = date2String(befroDay, "yyyy-MM-dd");
String dateStr = dateTimeFormat.format(befroDay);
// System.out.println("dateStr="+dateStr+" sd "+sd);
//List listDate = get2DateListDate("2016-05-01", "2016-05-03", "yyyy-MM-dd");
//List listDateStr = get2DateListDateStr("2016-05-01", "2016-05-03", "yyyy-MM-dd");
Date startDate = new Date();
Date endDate = dateTimeFormat.parse("2016-05-31");
List listDate = get2DateListWithDate(startDate,endDate,"yyyy-MM-dd");
for (int i = 0; i < listDate.size(); i++) {
System.err.println(listDate.get(i));
}
}
以上就是本文的全部内容,希望对大家的学习java程序设计有所帮助。



