java基本日期相关方法封装

java基本日期相关方法封装类

package com.common;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang.time.DateUtils;

public class DateUtil {
	public final static String PATTERN_TIME = "yyyy-MM-dd HH:mm:ss";
	public final static String PATTERN_DATE = "yyyy-MM-dd";
	public final static String PATTERN_DATE2 = "yyyyMMdd";
									
	//---------------------PATTERN_DATE2形式字符串转换---------------------//
	/**
	 * 日期格式转换(日期转字符串)
	 * @param date
	 * @return PATTERN_DATE2格式字符串
	 */
	public static String convertFormOfDate(Date date){
		String dateStr = formatDate(date);
		dateStr = dateStr.replace("-", "");
		return dateStr;
	}
	
	/**
	 * 日期格式转换(字符串转字符串)
	 * @param date 
	 * @return PATTERN_DATE2格式字符串
	 */
	public static String convertFormOfDate(String date){
		String dateStr = date.replace("-", "");
		return dateStr;
	}
	 							
	//---------------------长时间与短时间转换(时间转时间)---------------------//
	/**
	 * 长时间转短时间
	 * @param longDate
	 * @return Date shortDate(eg:2017-09-10)
	 */
	public static Date getDateShort(Date longDate){
		
		String  dateStr = formatDate(longDate);
		Date shortDate = (java.util.Date)java.sql.Date.valueOf(dateStr);
		
		return shortDate;
	}
	
	/**
	 * 短时间转长时间
	 * @param shortDate
	 * @returnDate Date longDate
	 */
	public static Date getDateLong(Date shortDate){
		
		String  dateStr = formatTime(shortDate);
		Date longDate = parseTime(dateStr);
		
		return longDate;
	}
	
								
	//------------------------字符串转日期(会抛异常)------------------------//
	/**
	 * 日期字符串解析(字符串转日期)
	 * @param date
	 * @return
	 */
	public static Date parseDate(String date) {
		try {
			SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DATE);
			return sdf.parse(date);
		} catch (ParseException e) {
			throw new RuntimeException("parse date failed for: " + date);
		}
	}
	
	/**
	 * 时间字符串解析(字符串转日期)
	 * @param time
	 * @return
	 */
	public static Date parseTime(String time) {
		 try {
			SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_TIME);
			 return sdf.parse(time);
		} catch (ParseException e) {
			throw new RuntimeException("parse date failed for: " + time);
		}
	}
	
	//----------------------------日期转字符串----------------------------//
	/**
	 * 日期格式化 pattern(日期转字符串)
	 * @param date
	 * @param pattern
	 * @return
	 */
	public static String formatDate(Date date, String pattern) {
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		return sdf.format(date);
	}
	
	/**
	 * 日期格式化 (日期转字符串)
	 * @param date
	 * @return PATTERN_DATE
	 */
	public static String formatDate(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DATE);
		return sdf.format(date);
	}
	
	/**
	 * 日期格式化 (日期转字符串)
	 * @param date
	 * @return PATTERN_TIME
	 */
	public static String formatTime(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_TIME);
		return sdf.format(date);
	}
	
	//--------------------------日期相关常用方法封装--------------------------//
	/**
	 * 比较时间字符串
	 * @param t1
	 * @param t2
	 * @return -1/1/0
	 */
	public static int compareTimeStr(String t1, String t2) {
		try {
			SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_TIME);
			Date d1 = sdf.parse(t1);
			Date d2 = sdf.parse(t2);
			if(d1.before(d2)) return -1;
			if(d1.after(d2)) return 1;
			return 0;
		} catch (ParseException e) {
			throw new IllegalArgumentException("Illegal arguement for time str:" + t1 + ", " + t2);
		}
	}
	
	/**
	 * 返回时间字符串对应的日期应该是周几
	 * @param timeStr
	 * @return 
	 */
	public static String getDayOfWeek(String timeStr) {
		try {
			SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_TIME);
			Date date = sdf.parse(timeStr);
			Calendar cal = Calendar.getInstance();
			cal.setTime(date);
			int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
			switch(dayOfWeek) {
			case 1 : return "周日";
			case 2 : return "周一";
			case 3 : return "周二";
			case 4 : return "周三";
			case 5 : return "周四";
			case 6 : return "周五";
			case 7 : return "周六";
			default : throw new IllegalArgumentException();
			}
		} catch (ParseException e) {
			throw new RuntimeException(e);
		}
	}
	
	/**
	 * 判断时间字符串是否是今天
	 * @param timeStr
	 * @return
	 */
	public static boolean isToday(String timeStr) {
		Date date = parseTime(timeStr);
		boolean isToday = DateUtils.isSameDay(date, new Date());
		return isToday;
	}
	
	//------------------------------测试类------------------------------//
	public static void main(String[] args) {
		
		/* 获取系统当前时间(长时间格式 2017-09-07 16:36:53.289) */
		Date date = new Timestamp(System.currentTimeMillis());
		
		/* Fri Sep 08 13:22:04 CST 2017 */
		Date date2 = new Date();
		
		/* Fri Sep 08 13:22:04 CST 2017 */
		Date date3 = new Date(System.currentTimeMillis());
		
		System.out.println(formatDate(date2));
		System.out.println(formatTime(date3));
		
		String timeStr = date.toString();
		isToday(timeStr);
		getDayOfWeek(timeStr);
		convertFormOfDate(date2);
		convertFormOfDate("2017-09-08");
		
		Date shortDate = getDateShort(date2);
		Date longDate = getDateLong(shortDate);
	}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值