Java工具类DateUtils实例详解

本文实例为大家分享了Java工具类DateUtils的具体代码,供大家参考,具体内容如下

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
 * 描述:公共日期工具类
 */
public class DateUtils {

  public static String DATE_FORMAT = "yyyy-MM-dd";

  public static String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

  public static String DATE_FORMAT_CHINESE = "yyyy年M月d日";

  /**
   * 获取当前日期
   *
   *
   * @return
   *
   */
  public static String getCurrentDate() {
    String datestr = null;
    SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_FORMAT);
    datestr = df.format(new Date());
    return datestr;
  }

  /**
   * 获取当前日期时间
   *
   *
   * @return
   *
   */
  public static String getCurrentDateTime() {
    String datestr = null;
    SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_TIME_FORMAT);
    datestr = df.format(new Date());
    return datestr;
  }

  /**
   * 获取当前日期时间
   *
   *
   * @return
   *
   */
  public static String getCurrentDateTime(String Dateformat) {
    String datestr = null;
    SimpleDateFormat df = new SimpleDateFormat(Dateformat);
    datestr = df.format(new Date());
    return datestr;
  }

  public static String dateToDateTime(Date date) {
    String datestr = null;
    SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_TIME_FORMAT);
    datestr = df.format(date);
    return datestr;
  }
  /**
   * 将字符串日期转换为日期格式
   *
   *
   * @param datestr
   * @return
   *
   */
  public static Date stringToDate(String datestr) {

      if(datestr ==null ||datestr.equals("")){
        return null;
      }
    Date date = new Date();
    SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_FORMAT);
    try {
      date = df.parse(datestr);
    } catch (ParseException e) {
      date=DateUtils.stringToDate(datestr,"yyyyMMdd");
    }
    return date;
  }

  /**
   * 将字符串日期转换为日期格式
   * 自定義格式
   *
   * @param datestr
   * @return
   *
   */
  public static Date stringToDate(String datestr, String dateformat) {
    Date date = new Date();
    SimpleDateFormat df = new SimpleDateFormat(dateformat);
    try {
      date = df.parse(datestr);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return date;
  }

  /**
   * 将日期格式日期转换为字符串格式
   *
   *
   * @param date
   * @return
   *
   */
  public static String dateToString(Date date) {
    String datestr = null;
    SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_FORMAT);
    datestr = df.format(date);
    return datestr;
  }

  /**
   * 将日期格式日期转换为字符串格式 自定義格式
   *
   * @param date
   * @param dateformat
   * @return
   */
  public static String dateToString(Date date, String dateformat) {
    String datestr = null;
    SimpleDateFormat df = new SimpleDateFormat(dateformat);
    datestr = df.format(date);
    return datestr;
  }

  /**
   * 获取日期的DAY值
   *
   *
   * @param date
   *      输入日期
   * @return
   *
   */
  public static int getDayOfDate(Date date) {
    int d = 0;
    Calendar cd = Calendar.getInstance();
    cd.setTime(date);
    d = cd.get(Calendar.DAY_OF_MONTH);
    return d;
  }

  /**
   * 获取日期的MONTH值
   *
   *
   * @param date
   *      输入日期
   * @return
   *
   */
  public static int getMonthOfDate(Date date) {
    int m = 0;
    Calendar cd = Calendar.getInstance();
    cd.setTime(date);
    m = cd.get(Calendar.MONTH) + 1;
    return m;
  }

  /**
   * 获取日期的YEAR值
   *
   *
   * @param date
   *      输入日期
   * @return
   *
   */
  public static int getYearOfDate(Date date) {
    int y = 0;
    Calendar cd = Calendar.getInstance();
    cd.setTime(date);
    y = cd.get(Calendar.YEAR);
    return y;
  }

  /**
   * 获取星期几
   *
   *
   * @param date
   *      输入日期
   * @return
   *
   */
  public static int getWeekOfDate(Date date) {
    int wd = 0;
    Calendar cd = Calendar.getInstance();
    cd.setTime(date);
    wd = cd.get(Calendar.DAY_OF_WEEK) - 1;
    return wd;
  }

  /**
   * 获取输入日期的当月第一天
   *
   *
   * @param date
   *      输入日期
   * @return
   *
   */
  public static Date getFirstDayOfMonth(Date date) {
    Calendar cd = Calendar.getInstance();
    cd.setTime(date);
    cd.set(Calendar.DAY_OF_MONTH, 1);
    return cd.getTime();
  }

  /**
   * 获得输入日期的当月最后一天
   *
   * @param date
   */
  public static Date getLastDayOfMonth(Date date) {
    return DateUtils.addDay(DateUtils.getFirstDayOfMonth(DateUtils.addMonth(date, 1)), -1);
  }

  /**
   * 判断是否是闰年
   *
   *
   * @param date
   *      输入日期
   * @return 是true 否false
   *
   */
  public static boolean isLeapYEAR(Date date) {

    Calendar cd = Calendar.getInstance();
    cd.setTime(date);
    int year = cd.get(Calendar.YEAR);

    if (year % 4 == 0 && year % 100 != 0 | year % 400 == 0) {
      return true;
    } else {
      return false;
    }
  }

  /**
   * 根据整型数表示的年月日,生成日期类型格式
   *
   * @param year
   *      年
   * @param month
   *      月
   * @param day
   *      日
   * @return
   *
   */
  public static Date getDateByYMD(int year, int month, int day) {
    Calendar cd = Calendar.getInstance();
    cd.set(year, month-1, day);
    return cd.getTime();
  }

  /**
   * 获取年周期对应日
   *
   * @param date
   *      输入日期
   * @param iyear
   *      年数  負數表示之前
   * @return
   *
   */
  public static Date getYearCycleOfDate(Date date, int iyear) {
    Calendar cd = Calendar.getInstance();
    cd.setTime(date);

    cd.add(Calendar.YEAR, iyear);

    return cd.getTime();
  }

  /**
   * 获取月周期对应日
   *
   * @param date
   *      输入日期
   * @param i
   * @return
   *
   */
  public static Date getMonthCycleOfDate(Date date, int i) {
    Calendar cd = Calendar.getInstance();
    cd.setTime(date);

    cd.add(Calendar.MONTH, i);

    return cd.getTime();
  }

  /**
   * 计算 fromDate 到 toDate 相差多少年
   *
   * @param fromDate
   * @param toDate
   * @return 年数
   *
   */
  public static int getYearByMinusDate(Date fromDate, Date toDate) {
    Calendar df=Calendar.getInstance();
    df.setTime(fromDate);

    Calendar dt=Calendar.getInstance();
    dt.setTime(toDate);

    return dt.get(Calendar.YEAR)-df.get(Calendar.YEAR);
  }

  /**
   * 计算 fromDate 到 toDate 相差多少个月
   *
   * @param fromDate
   * @param toDate
   * @return 月数
   *
   */
  public static int getMonthByMinusDate(Date fromDate, Date toDate) {
    Calendar df=Calendar.getInstance();
    df.setTime(fromDate);

    Calendar dt=Calendar.getInstance();
    dt.setTime(toDate);

    return dt.get(Calendar.YEAR)*12+dt.get(Calendar.MONTH)-
        (df.get(Calendar.YEAR)*12+df.get(Calendar.MONTH));
  }

  /**
   * 计算 fromDate 到 toDate 相差多少天
   *
   * @param fromDate
   * @param toDate
   * @return 天数
   *
   */
  public static long getDayByMinusDate(Object fromDate, Object toDate) {

    Date f=DateUtils.chgObject(fromDate);

    Date t=DateUtils.chgObject(toDate);

    long fd=f.getTime();
    long td=t.getTime();

    return (td-fd)/(24L * 60L * 60L * 1000L);
  }

  /**
   * 计算年龄
   *
   * @param birthday
   *      生日日期
   * @param calcDate
   *      要计算的日期点
   * @return
   *
   */
  public static int calcAge(Date birthday, Date calcDate) {

    int cYear=DateUtils.getYearOfDate(calcDate);
    int cMonth=DateUtils.getMonthOfDate(calcDate);
    int cDay=DateUtils.getDayOfDate(calcDate);
    int bYear=DateUtils.getYearOfDate(birthday);
    int bMonth=DateUtils.getMonthOfDate(birthday);
    int bDay=DateUtils.getDayOfDate(birthday);

    if(cMonth>bMonth||(cMonth==bMonth&&cDay>bDay)){
      return cYear-bYear;
    }else{
      return cYear-1-bYear;
    }
  }

  /**
   * 从身份证中获取出生日期
   *
   * @param idno
   *      身份证号码
   * @return
   *
   */
  public static String getBirthDayFromIDCard(String idno) {
    Calendar cd = Calendar.getInstance();
    if (idno.length() == 15) {
      cd.set(Calendar.YEAR, Integer.valueOf("19" + idno.substring(6, 8))
          .intValue());
      cd.set(Calendar.MONTH, Integer.valueOf(idno.substring(8, 10))
          .intValue() - 1);
      cd.set(Calendar.DAY_OF_MONTH,
          Integer.valueOf(idno.substring(10, 12)).intValue());
    } else if (idno.length() == 18) {
      cd.set(Calendar.YEAR, Integer.valueOf(idno.substring(6, 10))
          .intValue());
      cd.set(Calendar.MONTH, Integer.valueOf(idno.substring(10, 12))
          .intValue() - 1);
      cd.set(Calendar.DAY_OF_MONTH,
          Integer.valueOf(idno.substring(12, 14)).intValue());
    }
    return DateUtils.dateToString(cd.getTime());
  }

  /**
   * 在输入日期上增加(+)或减去(-)天数
   *
   * @param date
   *      输入日期
   * @param imonth
   *      要增加或减少的天数
   */
  public static Date addDay(Date date, int iday) {
    Calendar cd = Calendar.getInstance();

    cd.setTime(date);

    cd.add(Calendar.DAY_OF_MONTH, iday);

    return cd.getTime();
  }

  /**
   * 在输入日期上增加(+)或减去(-)月份
   *
   * @param date
   *      输入日期
   * @param imonth
   *      要增加或减少的月分数
   */
  public static Date addMonth(Date date, int imonth) {
    Calendar cd = Calendar.getInstance();

    cd.setTime(date);

    cd.add(Calendar.MONTH, imonth);

    return cd.getTime();
  }

  /**
   * 在输入日期上增加(+)或减去(-)年份
   *
   * @param date
   *      输入日期
   * @param imonth
   *      要增加或减少的年数
   */
  public static Date addYear(Date date, int iyear) {
    Calendar cd = Calendar.getInstance();

    cd.setTime(date);

    cd.add(Calendar.YEAR, iyear);

    return cd.getTime();
  }

  /**
   * 將OBJECT類型轉換為Date
   * @param date
   * @return
   */
  public static Date chgObject(Object date){

    if(date!=null&&date instanceof Date){
      return (Date)date;
    }

    if(date!=null&&date instanceof String){
      return DateUtils.stringToDate((String)date);
    }

    return null;

  }

  public static long getAgeByBirthday(String date){

    Date birthday = stringToDate(date, "yyyy-MM-dd");
    long sec = new Date().getTime() - birthday.getTime();

    long age = sec/(1000*60*60*24)/365;

    return age;
  }

  /**
   * @param args
   */
  public static void main(String[] args) {
    //String temp = DateUtil.dateToString(getLastDayOfMonth(new Date()),
    ///   DateUtil.DATE_FORMAT_CHINESE);
    //String s=DateUtil.dateToString(DateUtil.addDay(DateUtil.addYear(new Date(),1),-1));

    long s=DateUtils.getDayByMinusDate("2012-01-01", "2012-12-31");
    System.err.println(s);

  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java中DateUtils时间工具类详解

    本文实例为大家分享了DateUtils时间工具类的具体代码,供大家参考,具体内容如下 package com.example.administrator.myapp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * Date 工具类 * Created by lychun on 2017/12/07

  • Java 中DateUtils日期工具类的实例详解

    Java 中DateUtils日期工具类的实例详解 介绍 在java中队日期类型的处理并不方便,通常都需要借助java.text.SimpleDateFormat类来实现日期类型 和字符串类型之间的转换,但是在jdk1.8之后有所改善,jdk1.7以及之前的版本处理日期类型并不方便, 可以借助Joda Time组件来处理,尤其是日期类型的一些数学操作就更是不方便. java代码 /** * * 日期工具类 java对日期的操作一直都很不理想,直到jdk1.8之后才有了本质的改变. * 如果使用的

  • 实例解析Java日期格式工具类DateUtil.java

    话不多说,请看代码: DateUtil.java package pers.kangxu.datautils.utils; import java.text.SimpleDateFormat; import java.util.Date; import pers.kangxu.datautils.common.exception.DefineException; /** * * <b> * 处理日期 工具类 * </b> * @author kangxu * */ public c

  • Java日期时间格式化操作DateUtils 的整理

    Java日期时间格式化操作DateUtils 的整理 直接上代码,总结了开发过程中经常用到的日期时间格式化操作! import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.concurrent.TimeUnit; /** * ClassName: DateUtils <br/> * D

  • Java日期处理工具类DateUtils详解

    本文实例为大家分享了Java日期处理工具类DateUtils的具体代码,供大家参考,具体内容如下 import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * <日期时间处理工具类> */ public class DateUtils { /** * Dat

  • Java使用DateUtils对日期进行数学运算经典应用示例【附DateUtils相关包文件下载】

    本文实例讲述了Java使用DateUtils对日期进行数学运算的方法.分享给大家供大家参考,具体如下: 最近在写数据上传的程序,需要对Date进行一些数学运算,个人感觉在java中,日期的数学运算还是比较常用的,所以把Date的数学运算都玩了一下.试了一下,发现DateUtils这个工具类对于Date的数学运算非常方便,见代码吧. package date; import java.text.SimpleDateFormat; import java.util.Date; import org.

  • java针对于时间转换的DateUtils工具类

    本文实例为大家分享了时间转换的DateUtils工具类,供大家参考,具体内容如下 import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Map; import net.sf.json.JSONObject; /** * 时间日期工具类 * *

  • Java日期工具类DateUtils实例详解

    在项目开发中,日期是我们必不可少的的一部分,本文将总结代码开发中的关于日期常用的一些方法,以方便自己后期使用.下面直接上菜了: package com.example.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.ut

  • java DateUtil工具类时间戳类型转换详解

    本文实例为大家分享了DateUtil工具类时间戳类型转换的具体代码,供大家参考,具体内容如下 package com.sinosoft.media.sms.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { //当前时间 //public static Date DATE_NOW=new Date(); /*

  • Java工具类DateUtils实例详解

    本文实例为大家分享了Java工具类DateUtils的具体代码,供大家参考,具体内容如下 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 描述:公共日期工具类 */ public class DateUtils { public static String DATE_FORMAT = "yyyy-M

  • Java自定义异常类的实例详解

    Java自定义异常类的实例详解 为什么要自己编写异常类?假如jdk里面没有提供的异常,我们就要自己写.我们常用的类ArithmeticException,NullPointerException,NegativeArraySizeException,ArrayIndexoutofBoundsException,SecurityException这些类,都是继续着RuntimeException这个父类,而这个父类还有一个父类是Exception.那么我们自己写异常类的时候,也是继续Excepti

  • Java操作集合工具类Collections使用详解

    这篇文章主要介绍了java操作集合工具类Collections使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Collections是一个操作Set.List和Map等集合的工具类. Collections中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变.对集合对象实现同步控制等方法. 排序操作: reverse(List):反转List中元素的顺序: shuffle(List):对List集合元素进行

  • C++/java 继承类的多态详解及实例代码

    C++/java 继承类的多态详解 学过C++和Java的人都知道,他们二者由于都可以进行面向对象编程,而面向对象编程的三大特性就是封装.继承.多态,所有今天我们就来简单了解一下C++和Java在多态这方面的不同. 首先我们各看一个案例. C++ //测试继承与多态 class Animal { public: char name[128]; char behavior[128]; void outPut() { cout << "Animal" << endl

  • Java 实现FTP服务实例详解

    Java 实现FTP服务实例详解 1.FTP简介 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件.在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)."

  • Java 反射机制的实例详解

    Java 反射机制的实例详解 前言 今天介绍下Java的反射机制,以前我们获取一个类的实例都是使用new一个实例出来.那样太low了,今天跟我一起来学习学习一种更加高大上的方式来实现. 正文 Java反射机制定义 Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 用一句话总结就是反射可以实现在运行时可以知道任意一个类的属性和方法. 反射

  • Java 序列化和反序列化实例详解

    Java 序列化和反序列化实例详解 在分布式应用中,对象只有经过序列化才能在各个分布式组件之间传输,这就涉及到两个方面的技术-发送者将对象序列化,接受者将对象反序列化,下面就是一个很好的例子! 1.实体-Employee import java.io.Serializable; public class Employee implements Serializable{ /** * */ private static final long serialVersionUID = 1L; publi

  • Java中File的实例详解

    Java中File的实例详解 File 代表文件或者目录的类 构造函数 File(File parent,String child)---代表了指定父目录下的指定的子文件或者子目录 File(String pathname)---代表了指定路径对应的文件或者目录对象 重要方法 创建 createNewFile()---只能用来创建文件,并且一次只能创建一个文件,要求文件存储的目录必须真实存在 mkdir()---只能用来创建目录,不能用来创建多层目录 mkdirs()---创建多层目录 删除 d

随机推荐