日期常用工具類,日後積累應用,分享一下!
package com.ya2dan.report.admins.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.regex.Pattern;
/**
* 日期操作工具類
*
* @author wuxincheng
*
*/
public class DateUtil {
/** 測試 */
public static void main(String[] args) {
Calendar now = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
System.out.println(sdf.format(now.getTime()));
System.out.println(fomartStringToDate("20121212", "yyyyMMdd"));
System.out.println(fomartDateToString(fomartStringToDate("20121212", "yyyyMMdd"), "yyyy-MM-dd"));
System.out.println(getSpecifiedDayAfterDate(new Date(), "yyyyMMdd", 30));
}
/**
* 把字符串轉換成日期類型
* 比如: 把字符串20121212轉換成日期類型
*
* @param dateString 要轉換的字符串
* @param fomart 轉換成的格式
* @return
*/
public static Date fomartStringToDate(String dateString, String fomart){
SimpleDateFormat sdf = new SimpleDateFormat(fomart);
Date date = null;
try {
date = sdf.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 把日期轉換成字符串
*
* @param date
* @param fomart
* @return
*/
public static String fomartDateToString(Date date, String fomart){
SimpleDateFormat sdf = new SimpleDateFormat(fomart);
return sdf.format(date);
}
/**
* 根據一個日期, 獲得這個日期後的某一天的日期, 就是日期的計算
* 比如: 日期20121213 + 30天的日期
* @param date 指定日期
* @param formart 格式化的格式
* @param days 天數
* @return
*/
public static String getSpecifiedDayAfterDate(Date date, String formart, Integer days){
Calendar now = Calendar.getInstance();
now.setTime(date);
now.set(Calendar.DATE, now.get(Calendar.DATE) + days);
return fomartDateToString(now.getTime(), formart);
}
/**
* 獲得當前日期時間
*
* @return
*/
public static String getCurrentDateTime(Date date) {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sd.format(date);
}
/**
* 獲得當前日期
*
* @return
*/
public static String getCurrentDate(Date date, String formart) {
SimpleDateFormat sd = new SimpleDateFormat(formart);
return sd.format(date);
}
/**
* 獲得指定日期的前一天
*
* @param specifiedDay
* @param format yyyy-MM-dd / yyyy-MM-dd hh:mm:ss
* @return
* @throws Exception
*/
public static String getSpecifiedDayBefore(String specifiedDay, String format) {
Calendar c = Calendar.getInstance();
Date date = null;
try {
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 dayBefore = new SimpleDateFormat(format).format(c.getTime());
return dayBefore;
}
/**
* 獲得指定日期的後一天
*
* @param specifiedDay
* @param format yyyy-MM-dd / yyyy-MM-dd hh:mm:ss
* @return
*/
public static String getSpecifiedDayAfter(String specifiedDay, String format) {
Calendar c = Calendar.getInstance();
Date date = null;
try {
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(format).format(c.getTime());
return dayAfter;
}
/**
* 根據日期獲得所在周的日期
*
* @param mdate
* @return
*/
@SuppressWarnings("deprecation")
public static List<Date> dateToWeek(String dateString) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date mdate;
List<Date> list = new ArrayList<Date>();
try {
mdate = sdf.parse(dateString);
int b = mdate.getDay();
Date fdate;
Long fTime = mdate.getTime() - b * 24 * 3600000;
for (int a = 0; a <= 7; a++) {
fdate = new Date();
fdate.setTime(fTime + (a * 24 * 3600000));
list.add(a, fdate);
}
} catch (ParseException e) {
e.printStackTrace();
}
return list;
}
/**
* 獲得最近七天的日期
* @return
*/
public static List<Date> getRecently7Days(){
List<Date> the7Days = new ArrayList<Date>();
try {
String currentDate = getCurrentDate(new Date(), "yyyy-MM-dd");
String specDay = currentDate;
String specBeforeDay = currentDate;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 0; i < 7; i++) {
specDay = specBeforeDay;
specBeforeDay = getSpecifiedDayBefore(specDay, "yyyy-MM-dd");
the7Days.add(i, sdf.parse(specBeforeDay));
}
} catch (Exception e) {
e.printStackTrace();
}
return the7Days;
}
/**
* 根據一個日期獲得一個起始日期和一個結束日期
*
* @param specDay 日期
* @param timeStamp 時間戳
* @return
*/
public static String[] getStartAndEndTime(String specDay, String timeStamp){
String[] stratAndEndTime = new String[2];
String specifiedDay = specDay + " " + timeStamp;
stratAndEndTime[0] = getSpecifiedDayBefore(specifiedDay, "yyyy-MM-dd") + " " + timeStamp;
stratAndEndTime[1] = specifiedDay;
return stratAndEndTime;
}
}
待續