java日期操作工具類(獲取指定日期、日期轉(zhuǎn)換、相隔天數(shù))
本文實(shí)例為大家分享了java日期操作工具類,獲取指定日期前一天、后一天;日期轉(zhuǎn)換;兩個(gè)日期之間相隔天數(shù)等工具類,供大家參考,具體內(nèi)容如下
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 {
/**
* 獲得指定日期的前一天
*
* @param specifiedDay
* @param format
* @return
* @throws Exception
*/
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;
}
/**
* 獲得指定日期的后一天
*
* @param specifiedDay
* @return
*/
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;
}
/**
* 獲得指定日期的前一天
*
* @param specifiedDay
* @param format
* @return
* @throws Exception
*/
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;
}
/**
* 獲得指定日期的后一天
*
* @param specifiedDay
* @return
*/
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;
}
/**
* 將date類型準(zhǔn)成指定format格式的字符串
*
* @param day 日期
* @param format 指定格式
* @return
*/
public static String date2String(Date day, String format) {
String dateStr = new SimpleDateFormat(format).format(day.getTime());
return dateStr;
}
/**
* 將字符串轉(zhuǎn)成指定格式的date類型
*
* @param day 日期
* @param format 指定格式
* @return
*/
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;
}
/**
*
* @Title: DateDate2CompareValue
* @Description: 兩個(gè)date類型比較大小
* @param dayAfter date類型
* @param date date類型
* @param 格式化
* @return boolean
* @throws
*/
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;
}
/**
* 比較兩個(gè)日期年月日的大小
* @Title: DateCompareValue
* @Description: 一個(gè)stirng一個(gè)date類型比較大小
* @param date1 String類型
* @param date2 date類型
* @param @return
* @return boolean
* @throws
*/
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;
}
/**
* 比較兩個(gè)日期年月日的大小
* @Title: DateStr2CompareValue
* @Description: 兩個(gè)string類型比較時(shí)間大小
* @param date1
* @param date2
* @return boolean
* @throws
*/
@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;
}
/**
*
* @Title: get2DateListDate
* @date 2016年5月17日 下午2:11:48
* @Description: 獲取時(shí)間之內(nèi)的 相隔天數(shù)的date集合
* @param @param preDate 開始時(shí)間
* @param @param nextDate 結(jié)束時(shí)間
* @param @param format fomat格式
* @param @return
* @return List<Date> 相隔天數(shù)集合
* @throws
*/
public static List<Date> get2DateListDate(String preDate, String nextDate, String format) {
List<Date> list = new ArrayList<>();
if(nextDate.equals(preDate)){//開始時(shí)間 結(jié)束時(shí)間相等就直接返回
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;
}
/**
*
* @Title: get2DateListDate
* @date 2016年5月17日 下午2:11:48
* @Description: 獲取時(shí)間之內(nèi)的 相隔天數(shù)的string集合
* @param @param preDate 開始時(shí)間
* @param @param nextDate 結(jié)束時(shí)間
* @param @param format fomat格式
* @param @return
* @return List<Date> 相隔天數(shù)集合
* @throws
*/
public static List<String> get2DateListDateStr(String preDate, String nextDate, String format) {
List<String> list = new ArrayList<>();
if(nextDate.equals(preDate)){//如果開始時(shí)間等于結(jié)束時(shí)間那么就是同一天
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;
}
/**
*
* @Title: get2DateListWithDate
* @date 2016年5月26日 上午9:20:29
* @Description: 獲取兩個(gè)日期之間日期的
* @param @param startDate 開始日期 date類型
* @param @param endDate 結(jié)束日期 date類型
* @param @return
* @return List<Date> datelist
* @throws
*/
public static List<Date> get2DateListWithDate(Date startDate, Date endDate,String format) {
List<Date> 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)){//如果開始時(shí)間等于結(jié)束時(shí)間那么就是同一天
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";// 這里最好從數(shù)據(jù)庫中讀取
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<Date> listDate = get2DateListDate("2016-05-01", "2016-05-03", "yyyy-MM-dd");
//List<String> listDateStr = get2DateListDateStr("2016-05-01", "2016-05-03", "yyyy-MM-dd");
Date startDate = new Date();
Date endDate = dateTimeFormat.parse("2016-05-31");
List<Date> listDate = get2DateListWithDate(startDate,endDate,"yyyy-MM-dd");
for (int i = 0; i < listDate.size(); i++) {
System.err.println(listDate.get(i));
}
/*for (int i = 0; i < listDateStr.size(); i++) {
//System.out.println(listDateStr.get(i));
}*/
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)java程序設(shè)計(jì)有所幫助。
相關(guān)文章
SpringBoot查看項(xiàng)目配置信息的幾種常見方法
這篇文章主要為大家詳細(xì)介紹了查看Spring Boot項(xiàng)目所有配置信息的幾種方法,包括 Actuator端點(diǎn),日志輸出,代碼級(jí)獲取等方式并附帶詳細(xì)步驟和示例,希望對(duì)大家有一定的幫助2025-04-04
Java實(shí)現(xiàn)根據(jù)前端所要格式返回樹形3級(jí)層級(jí)數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)根據(jù)前端所要格式返回樹形3級(jí)層級(jí)數(shù)據(jù),文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解下2024-02-02
Spark MLlib隨機(jī)梯度下降法概述與實(shí)例
這篇文章主要為大家詳細(xì)介紹了Spark MLlib隨機(jī)梯度下降法概述與實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
mybatis createcriteria和or的區(qū)別說明
這篇文章主要介紹了mybatis createcriteria和or的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
springboot shardingjdbc與druid數(shù)據(jù)源沖突問題及解決
這篇文章主要介紹了springboot shardingjdbc與druid數(shù)據(jù)源沖突問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
java內(nèi)存管理關(guān)系及內(nèi)存泄露的原理分析
這篇文章主要介紹了java內(nèi)存管理關(guān)系及內(nèi)存泄露的原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
Java中用Mybatis插入mysql報(bào)主鍵重復(fù)的解決方案
這篇文章主要介紹了Java中用Mybatis插入mysql報(bào)主鍵重復(fù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-02-02

