`

DateUtil.java 通用时间处理类

    博客分类:
  • 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;
  }
 
}

分享到:
评论

相关推荐

    DateUtil(通用日期工具类)

    在Java编程中,DateUtil是一个常见的工具类,用于处理日期和时间相关的操作。这个类通常包含了一系列静态方法,便于开发者进行日期格式化、日期比较、日期计算等常见任务。下面我们将详细探讨DateUtil中的关键知识点...

    java时间处理工具类--DateUtils

    * @(#)DateUtil.java * * * @author kidd * @version 1.00 2007/8/8 */ import java.util.*; import java.text.*; import java.sql.Timestamp; public class DateUtils { /** * 时间范围:年 */ ...

    DateUtil通用类

    在Java编程语言中,`DateUtil`类通常是一个自定义工具类,用于处理与日期和时间相关的各种操作。这类工具类的设计目标是提供简洁、高效且易于使用的API,以替代或扩展Java内置的`java.util.Date`和`java.time`包中的...

    java操作日期时间工具类

    `java.util.Calendar`是抽象类,它是日期和时间的日历字段计算的通用日历系统实现。`Calendar`提供了更灵活的日期时间操作,但API设计复杂,使用起来较为繁琐。 Java 8引入了`java.time`包,这是对日期时间API的...

    java转换万能工具类附带jar包

    一个json相互转换的万能java类(JsonUtil.java), 这个下面就是万能转换类的方法注释,懂java的相信都能看懂。 /** *//** * 从一个JSON 对象字符格式中得到一个java对象 * @param jsonString * @param ...

    通用Android工具库Common4Android.zip

    DateUtil.java 日期工具类,日期转换生肖、日期转换星座、日期相互转换。 DesUtil.java DES加密工具类。 DeviceUtil.java 设备信息...

    java工具类 utils.zip

    1. **Func.java**:这个类可能包含一些通用函数或者没有归类到其他特定工具类中的方法,比如全局异常处理、日志打印等。 2. **StringUtil.java**:字符串处理是Java开发中常见的任务,此类提供了诸如检查空字符串、...

    最全的java时间(日期)工具类

    本文将深入探讨Java中的日期时间工具类,特别是基于给定的"DateUtil.java"文件,我们将聚焦在传统`java.util.Date`和`java.text.SimpleDateFormat`以及Java 8的`java.time`包中的相关类。 首先,我们来看看`java....

    Java工具类

    - `DateUtil.java` 包含日期和时间的处理方法,如格式化日期、计算时间差、日期比较等,这些在处理时间相关的业务逻辑时非常实用。 - `DateHandler.java` 可能提供了更高级的日期时间操作,如处理时区、日期间隔...

    java工具类

    2. **TimeUtil.java** 和 **DateUtil.java**:时间日期处理工具类,它们提供了方便的时间日期转换、比较、格式化等方法。在Java中,Date和Calendar类有时难以操作,这些工具类简化了与日期和时间相关的操作。 3. **...

    日期处理工具

    在博文的源码`DateUtil.java`中,可能包含了一些自定义的日期处理函数,如通用的日期格式化方法、时间差计算、日期转换等。这些工具方法通常会封装一些常见操作,使得在项目中使用日期时,代码更加整洁,可读性更强...

    JAVA开发中重用到的Utils,通用工具类 utils.rar

    2. **日期时间工具类(DateUtil/TimeUtil)**:Java 8之前,人们常常使用Apache Commons Lang的DateUtils或者Java自身的SimpleDateFormat来处理日期时间。这些工具提供了格式化、解析日期、时间的比较等功能。例如,`...

    <<项目架构那点儿事>>——工具类,你喜欢你就拿去

    日期处理是任何系统中常见的需求,`DateUtil`可能是用来处理日期和时间的工具类。它可能包含格式化日期、计算两个日期之间的差值、获取当前日期等方法。`java.util.Date`和`java.time`包中的类可能被大量使用,学习...

    一个java处理JSON格式数据的通用类.pdf

    ### Java处理JSON格式数据的通用类详解 #### 概述 在现代软件开发过程中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式被广泛采用。它基于JavaScript的一个子集,采用完全独立于编程语言的...

    java中计算某个月的工作日总共几天

    这里将介绍一种较为通用的方法:利用`java.util.Calendar`类来计算指定月份内的工作日。 #### 一、基础概念 1. **Calendar 类**: - `java.util.Calendar` 是一个抽象类,用于表示特定时间的日期和时间。 - 可以...

    Android-Java开发中用到的工具类收集

    在Android Java开发中,工具类(Utils类)是开发者经常使用的辅助代码集合,它们封装了各种通用功能,以便在项目中快速调用。这个名为"java-utils-master"的压缩包很可能是包含了一系列实用工具类的开源项目。下面,...

    安卓开发框架工具类相关-Android开发的通用工具类.zip

    "安卓开发框架工具类相关-Android开发的通用工具类.zip" 提供了一组可能用于Android应用开发的通用工具类集合。虽然不能保证每个类都能直接运行,但它们可以作为学习和参考的资源,帮助开发者理解常见的功能实现。 ...

    ArrayUtil+DateUtil+FileUtil+ReguUtil+StringUtil

    - **日期时间处理**:DateUtil类提供了处理日期和时间的功能,如获取当前日期、格式化日期、解析日期字符串、计算日期差等。 - **实例方法**:`getCurrentDate`返回当前日期,`formatDate`将日期对象转换为指定...

    日期数据通用处理工具类

    日期数据通用处理工具类,例如根据给定日期获取下月第n天日期;获得当前日期与本周一相差的天数;获得当前日期所对应的上周星期几的日期;根据给定日期获取其后第n天日期等......

    不要再重复造轮子了,Hutool这款开源工具类库贼好使(csdn)————程序.pdf

    Hutool是一款强大的Java工具类库,其设计目标是简化常见的开发任务,避免开发者重复编写通用的工具类。Hutool由" Hu"+"tool"组成,"Hu"来源于作者对前公司的致敬,"tool"代表工具,同时也巧妙地取了"糊涂"的谐音,...

Global site tag (gtag.js) - Google Analytics