Newer
Older
EMS-WEB-3.0 / src / main / java / com / casic / accessControl / util / TimeFormat.java
package com.casic.accessControl.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;

/**
 * 格式化日期工具类
 * 默认模式yyyy-MM-dd HH:mm:ss
 * @author Administrator
 *
 */
public class TimeFormat {

	private static final String DATE_FORMAT_STRING = "yyyy-MM-dd";
	private static final String TIME_FORMAT_STRING = "HH:mm:ss";
	private static final String TIMESTAMP_FORMAT_STRING = "yyyy-MM-dd HH:mm:ss";
	
	// 默认格式化格式
	private static SimpleDateFormat defaultFormat = new SimpleDateFormat(TIMESTAMP_FORMAT_STRING);

	public static void setFormatString(String pattern) {
		defaultFormat.applyPattern(pattern);
	}

	/**
	 * 默认格式化日期
	 * 
	 * @param Date date
	 * @return String
	 */
	public static String format(Date date) {
		return defaultFormat.format(date);
	}
	
	/**
	 * 日期格式化
	 * 
	 * @param date
	 * @return
	 */
	public static String formatDate(Date date) {
		return TimeFormat.format(date, DATE_FORMAT_STRING);
	}
	
	/**
	 * 时间格式化
	 * 
	 * @param date
	 * @return
	 */
	public static String formatTime(Date date) {
		return TimeFormat.format(date, TIME_FORMAT_STRING);
	}
	
	/**
	 * 时间戳格式化
	 * 
	 * @param date
	 * @return
	 */
	public static String formatTimestamp(Date date) {
		return TimeFormat.format(date, TIMESTAMP_FORMAT_STRING);
	}

	/**
	 * 以指定模式格式化日期
	 * 
	 * @param Date date
	 * @param String pattern
	 * @return String
	 */
	public static String format(Date date, String pattern) {
		SimpleDateFormat formatter = new SimpleDateFormat(pattern);
		return formatter.format(date);
	}
	
	/**
	 * 根据起止日期生成日期序列
	 * 包括start和end的日期
	 * 
	 * @param start
	 * @param end
	 * @return
	 */
	public static List<String> generateDates(String start, String end) throws ParseException {
		List<String> dates = new ArrayList<String>();
		Calendar s = Calendar.getInstance();
		Calendar e = Calendar.getInstance();
		s.setTime(TimeFormat.parse(start, DATE_FORMAT_STRING));
		s.set(Calendar.HOUR_OF_DAY, 0);
		s.set(Calendar.MINUTE, 0);
		s.set(Calendar.SECOND, 0);
		e.setTime(TimeFormat.parse(end, DATE_FORMAT_STRING));
		e.set(Calendar.HOUR_OF_DAY, 0);
		e.set(Calendar.MINUTE, 0);
		e.set(Calendar.SECOND, 0);
		while (s.before(e) == true) {
			dates.add(TimeFormat.formatDate(s.getTime()));
			s.add(Calendar.DATE, 1);
		}
		
		dates.add(end);
		return dates;
	}

	
	/**
	 * 解析日期字符串
	 * 
	 * @param String source
	 * @return Date
	 * 
	 * @throws ParseException
	 */
	public static Date parse(String source) throws ParseException {
		return defaultFormat.parse(source);
	}

	/**
	 * 以指定模式解析日期
	 * 
	 * @param String source
	 * @param String pattern
	 * @return Date
	 * 
	 * @throws ParseException
	 */
	public static Date parse(String source, String pattern) throws ParseException {
		SimpleDateFormat formatter = new SimpleDateFormat(pattern);
		return formatter.parse(source);
	}
	
	
	public static Date parseDateWithoutTime(String source) throws ParseException {
		SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT_STRING);
		Calendar date = Calendar.getInstance();
		date.setTime(formatter.parse(source));
		date.set(Calendar.HOUR, 0);
		date.set(Calendar.HOUR, 0);
		date.set(Calendar.MINUTE, 0);
		return date.getTime();
	}
	
}