DateUtil.java 通用时间处理类

package util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期操作功能类.
 * <p/>
 * 最后更新:2008-5-31
 *
 * @author mcl
 */
public class DateUtil {

  /**
   * 判断字符串是否是有效的日期,
   * 格式"yyyy-MM-dd,yyyy-MM-d,yyyy-M-dd,yyyy-M-d
   * "yyyy/MM/dd,yyyy/MM/d,yyyy/M/dd,yyyy/M/d"
   * "yyyyMMdd"
   *
   * @param date 日期字符串
   * @return 是则返回true,否则返回false
   */
  public static boolean isValidDate(String date) {
    if ((date == null) || (date.length() < 8)) {
      return false;
    }
    try {
      boolean result = false;
      SimpleDateFormat formatter;
      char dateSpace = date.charAt(4);
      String format[];
      if ((dateSpace == '-') || (dateSpace == '/')) {
        format = new String[4];
        String strDateSpace = Character.toString(dateSpace);
        format[0] = "yyyy" + strDateSpace + "MM" + strDateSpace + "dd";
        format[1] = "yyyy" + strDateSpace + "MM" + strDateSpace + "d";
        format[2] = "yyyy" + strDateSpace + "M" + strDateSpace + "dd";
        format[3] = "yyyy" + strDateSpace + "M" + strDateSpace + "d";
      }
      else {
        format = new String[1];
        format[0] = "yyyyMMdd";
      }

      for (int i = 0; i < format.length; i++) {
        String aFormat = format[i];
        formatter = new SimpleDateFormat(aFormat);
        formatter.setLenient(false);
        String tmp = formatter.format(formatter.parse(date));
        if (date.equals(tmp)) {
          result = true;
          break;
        }
      }
      return result;
    }
    catch (ParseException e) {
      return false;
    }
  }

  /**
   * 判断字符串是否是有效的日期,格式"yyyy-MM-dd HH:mm:ss"
   *
   * @param date 日期字符串
   * @return 是则返回true,否则返回false
   */
  public static boolean isValidTime(String date) {
    try {
      SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      formatter.setLenient(false);
      formatter.parse(date);
      return true;
    }
    catch (ParseException e) {
      return false;
    }
  }

  /**
   * 转换字符串为日期,格式"yyyy-MM-dd"
   *
   * @param date 日期字符串,格式为"yyyy-MM-dd"
   * @return 返回格式化的日期
   */
  public static Date strToDate(String date) throws ParseException {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    formatter.setLenient(false);
    return formatter.parse(date);
  }

  /**
   * 转换字符串为日期,格式"yyyy-MM-dd"
   *
   * @param date 日期字符串,格式为"yyyyMMdd"
   * @return 返回格式化的日期
   */
  public static Date strToFormateDate(String date) throws ParseException {
        String str = date.substring(0,4)+"-"+date.substring(4,6)+"-"+date.substring(6,8);
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        formatter.setLenient(false);
        return formatter.parse(str);
  }
  public static void main(String args[]) throws ParseException{
      strToFormateDate("20081219");
  }
  /**
   * 转换字符串为日期,格式"yyyy-MM-dd HH:mm:ss"
   *
   * @param date 日期字符串
   * @return 返回格式化的日期
   */
  public static Date strToTime(String date) throws ParseException {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    formatter.setLenient(false);
    return formatter.parse(date);
  }

  /**
   * 转换日期为字符串,格式"yyyy-MM-dd"
   *
   * @param date 日期
   * @return 返回格式化的日期字符串
   */
  public static String dateToStr(Date date) {
    if (date == null) return null;
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    return formatter.format(date);
  }
/**
 * 转换日期为字符串,格式"yyyyMMdd"
 * @param date
 * @return
 */
 
  public static String dateToStrNoBlank(Date date) {
        if (date == null) return null;
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
        return formatter.format(date);
      }
  /**
   * 转换日期为字符串,格式"yyyyMMdd"
   * @param date
   * @return
   */
   
    public static String dateToSimpleStr(Date date) {
        String str = "";
        String simpleStr = "";
          if (date == null) return null;
          SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
          str = formatter.format(date);
          simpleStr = str.substring(2,4)+str.substring(4,6)+str.substring(6,8);
          return simpleStr;
    }

  /**
   * 转换日期为字符串,格式"yyyy-MM-dd HH:mm:ss"
   *
   * @param date 日期
   * @return 返回格式化的日期字符串
   */
  public static String timeToStr(Date date) {
    if (date == null) return null;
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return formatter.format(date);
  }

  /**
   * 取得现在的日期,格式"yyyy-MM-dd HH:mm:ss"
   *
   * @return 返回格式化的日期字符串
   */
  public static String getNow() {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date Now = new Date();
    return formatter.format(Now);
  }

  /**
   * 取得现在的日期,格式"yyyy-MM-dd"
   *
   * @return 返回格式化的日期字符串
   */
  public static String getDate() {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    Date Now = new Date();
    return formatter.format(Now);
  }
 
  /**
   * 取得现在的时间,格式"HH:mm:ss"
   *
   * @return 返回格式化的时间字符串
   */
  public static String getTime() {
    SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
    Date Now = new Date();
    return formatter.format(Now);
  }

  /**
   * 取得年份,格式"yyyy"
   *
   * @return 返回当前年份
   */
  public static int getYear() {
    Date Now = new Date();
    return getYear(Now);
  }
  /**
   * 取得当年年初日期,格式"yyyy-mm-dd"
   * @return 返回当年年初日期
   */
  public static String getBeginDate(){
      String date = String.valueOf(getYear()) +"-" + "01" +"-" + "01";
      return date;
  }

  /**
   * 取得日期的年份,格式"yyyy"
   *
   * @param date 日期
   * @return 日期的年份
   */
  public static int getYear(Date date) {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
    return Integer.parseInt(formatter.format(date));
  }

  /**
   * 取得月份
   *
   * @return 返回当前月份
   */
  public static int getMonth() {
    Date Now = new Date();
    return getMonth(Now);
  }

  /**
   * 取得日期的月份
   *
   * @param date 日期
   * @return 日期的月份
   */
  public static int getMonth(Date date) {
    SimpleDateFormat formatter = new SimpleDateFormat("M");
    return Integer.parseInt(formatter.format(date));
  }

  /**
   * 取得今天的日期数
   *
   * @return 返回今天的日期数
   */
  public static int getDay() {
    Date Now = new Date();
    return getDay(Now);
  }

  /**
   * 取得日期的天数
   *
   * @param date 日期
   * @return 日期的天数
   */
  public static int getDay(Date date) {
    SimpleDateFormat formatter = new SimpleDateFormat("d");
    return Integer.parseInt(formatter.format(date));
  }

  /**
   * 获得与某日期相隔几天的日期
   *
   * @param date     指定的日期
   * @param addCount 相隔的天数
   * @return 返回的日期
   */
  public static Date addDay(Date date, int addCount) throws ParseException {
    //Calendar cal = new GregorianCalendar();
    //最好用Calendar.getInstance();
    //因为有的地方,不是使用GregorianCalendar的。
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(strToDate(dateToStr(date)));
    calendar.add(Calendar.DATE, addCount);
    return calendar.getTime();
  }

  /**
   * 获得与某日期相隔几月的日期
   *
   * @param date     指定的日期
   * @param addCount 相隔的月数
   * @return 返回的日期
   */
  public static Date addMonth(Date date, int addCount) throws ParseException {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(strToDate(dateToStr(date)));
    calendar.add(Calendar.MONTH, addCount);
    return calendar.getTime();
  }

//**************************************************
  //public static long getDistDay(Date earlier, Date later)
  /*
   public static long getDistDay()
   {
  Calendar calendar = Calendar.getInstance();

  //calendar.setTime(strToDate(dateToStr(earlier)));
  long i = calendar.getTimeInMillis();
  System.out.println(calendar.getTime());
  System.out.println(calendar.getTimeInMillis());
  System.out.println(calendar.getTime());
  System.out.println(calendar.getTimeInMillis());
  return i;
   }

   public static void main(String[] args)
   {
  //System.out.println();
  getDistDay();
   }
  */
  /**
   * 将传入的日期转换为中文格式
   * @param enDate 指定的日期,格式为2007-01-02
   * @return 返回的符合中文格式的日期
   */
  public static String enToCnDate(Date enDate){
      String datestr = dateToStr(enDate);
      String s=datestr.substring(0,4);
      s = s + "年";
      String s2=datestr.substring(5,7);
      s2 = s2 + "月";
      String s3 = datestr.substring(8, datestr.length());
      s2 = s2 + s3 + "日";
      String sFinal;
      String [] a={"0","1","2","3","4","5","6","7","8","9"};
      String [] b={"O","一","二","三","四","五","六","七","八","九"};
      
      for(int i=0;i<a.length;i++){
       for(int j=0;j<s.length()-1;j++){
        if(s.substring(j,j+1).equals(a[i]))
            s=s.substring(0,j)+b[i]+s.substring(j+1,s.length());
        }
       }
        String [] c={"01","02","03","04","05","06","07","08","09","10",
        "11","12","13","14","15","16","17","18","19","20",
        "21","22","23","24","25","26","27","28","29","30","31"};
   
        String [] d={"一","二","三","四","五","六","七","八","九","十",
        "十一","十二","十三","十四","十五","十六","十七","十八","十九","二十",
        "二十一","二十二","二十三","二十四","二十五","二十六","二十七","二十八",
        "二十九","三十","三十一"};
          
        for(int i=0;i<c.length;i++){
         for(int j=0;j<s2.length()-2;j++){
              if(s2.substring(j,j+2).equals(c[i]))
                   s2=s2.substring(0,j)+d[i]+s2.substring(j+2,s2.length());
          }
        }
        sFinal = s + s2;
        return sFinal;
  }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值