Java日期工具類

日期常用工具類,日後積累應用,分享一下!

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;
	}
	
}

待續
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章