Java实现的日期处理类完整实例

 更新时间:2017年09月18日 11:48:14   作者:夏日娃  
这篇文章主要介绍了Java实现的日期处理类,结合完整实例形式分析了Java针对日期的获取、运算、转换等相关操作技巧,需要的朋友可以参考下

本文实例讲述了Java实现的日期处理类。分享给大家供大家参考,具体如下:

开发中常常要使用日期,先小结如下,以备后用。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class FormatTime {
  private final static SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
  private final static SimpleDateFormat sdfymdhm = new SimpleDateFormat("yyyyMMddHHmmss");
  private final static SimpleDateFormat sdfymdhms =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  /**
   *
  * @Title: getCurrentDay
  * @Description: TODO 获取当天时间(20161109)
  * @return
   */
  public static String getCurrentDay(){
    return sdf.format(new Date());
  }
  /**
   *
  * @Title: fTime2
  * @Description: TODO 获取time这个日期以前dayAgo天的日期
  * @return
   */
  public static String fTime(String time,int dayAgo){
    Date date = null;
    try {
      date = sdf.parse(time);
    } catch (ParseException e) {
        throw new RuntimeException(e);
    }
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    if(dayAgo>0){
      calendar.add(Calendar.DAY_OF_MONTH, -dayAgo);//前15天数据
      date = calendar.getTime();
      calendar.setTime(date);
    }
    int year=calendar.get(Calendar.YEAR);
    int month=calendar.get(Calendar.MONTH) + 1;
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    String mon="";
    String d="";
    if(month<10){
      mon="0"+month;
    }else{
      mon=month+"";
    }
    if(day<10){
      d="0"+day;
    }else{
      d=""+day;
    }
    String ret=year+""+mon+""+d;
    return ret;
  }
  /**
   *
  * @Title: fTime2
  * @Description: TODO 获取time这个日期以后dayAfter天的日期
  * @return
   */
  public static String fTime2(String time,int dayAfter){
    Date date = null;
    try {
      date = sdf.parse(time);
    } catch (ParseException e) {
        throw new RuntimeException(e);
    }
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    if(dayAfter>0){
      calendar.add(Calendar.DAY_OF_MONTH, +dayAfter);//后15天数据
      date = calendar.getTime();
      calendar.setTime(date);
    }
    int year=calendar.get(Calendar.YEAR);
    int month=calendar.get(Calendar.MONTH) + 1;
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    String mon="";
    String d="";
    if(month<10){
      mon="0"+month;
    }else{
      mon=month+"";
    }
    if(day<10){
      d="0"+day;
    }else{
      d=""+day;
    }
    String ret=year+""+mon+""+d;
    return ret;
  }
  /**
   *
  * @Title: getDefaultTime
  * @Description: TODO 获取昨天的日期
  * @return
   */
  public static String getDefaultTime(){
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.DAY_OF_MONTH, -1);//前1天
    Date date = calendar.getTime();
    String time=sdf.format(date);
    return time;
  }
  /**
   *
  * @Title: getSunday
  * @Description: TODO 获取最近一个星期天
  * @return
   */
  public static String getSunday(){
    SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
    Calendar c = Calendar.getInstance();
    c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    return f.format(c.getTime());
  }
  /**
   *
  * @Title: getMonthFirstDay
  * @Description: TODO 获取本月第一天
  * @return
   */
  public static String getCurrentMonthFirstDay(){
    Calendar  cal_1=Calendar.getInstance();//获取当前日期
    cal_1.add(Calendar.MONTH, 0);
    cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
    String firstDay = sdf.format(cal_1.getTime());
    return firstDay;
  }
  /**
   *
  * @Title: getMonthFirstDay
  * @Description: TODO 获取上月第一天
  * @return
   */
  public static String getPreviousMonthFirstDay(){
   //获取当前月第一天:
  Calendar c = Calendar.getInstance();
  c.add(Calendar.MONTH, -1);
  c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
  String first = sdf.format(c.getTime());
  return first;
  }
  /**
   *
  * @Title: getMonthFirstDay
  * @Description: TODO 获取上月最后一天
  * @return
   */
  public static String getPreviousMonthLastDay(){
  //获取当前月最后一天
  Calendar ca = Calendar.getInstance();
  ca.set(Calendar.DAY_OF_MONTH,0);//
  String lastDay = sdf.format(ca.getTime());
  return lastDay;
  }
  /**
   *
  * @Title: getCurrentMonthLastDay
  * @Description: TODO 获取指定时间最后一天
  * @return
   */
  public static String getCurrentMonthLastDay(String time){
    Date date =null;
   try {
    date= sdf.parse(time);
  } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  //获取当前月最后一天
  Calendar ca = Calendar.getInstance();
  ca.setTime(date);
  ca.set(Calendar.DAY_OF_MONTH,
      ca.getActualMaximum(Calendar.DAY_OF_MONTH)); //
  String lastDay = sdf.format(ca.getTime());
  return lastDay;
  }
  /***
   *
  * @Title: getCurrentWeekDay
  * @Description: TODO 获取本周周一
   */
  public static String getCurrentMonday(){
     Calendar cal = Calendar.getInstance();
     cal.setFirstDayOfWeek(Calendar.MONDAY);//将每周第一天设为星期一,默认是星期天
     cal.add(Calendar.DATE, 0);
     cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
     String monday = sdf.format(cal.getTime());
     return monday;
  }
  /***
   *
  * @Title: getPreviousSunday
  * @Description: TODO 获取上周周日
   */
  public static String getPreviousSunday(){
     Calendar cal = Calendar.getInstance();
     cal.setFirstDayOfWeek(Calendar.MONDAY);//将每周第一天设为星期一,默认是星期天
     cal.add(Calendar.DATE, -1*7);
     cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
     String sunday =sdf.format(cal.getTime());
     return sunday;
  }
  /**
   *
  * @Title: getMiniSencond
  * @Description: TODO 将日期转换为毫秒数
  * @param str
  * @return
   */
  public static String getMiniSencond(String str){
    long millionSeconds=0;
    try {
      millionSeconds = sdfymdhm.parse(str).getTime();//毫秒
    } catch (ParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return millionSeconds+"";
  }
   /**
   *
  * @Title: getDateSencond
  * @Description: TODO 将日期转换为毫秒数
  * @param str
  * @return
   */
  public static long getDateSencond(String str){
    long millionSeconds=0;
    try {
      millionSeconds = sdfymdhms.parse(str).getTime();//毫秒
    } catch (ParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return millionSeconds;
  }
  /**
   * 计算日期相差天数
   * @param str1
   * @param str2
   * @return
   */
  public static int getDistanceOfTwoDate(String str1,String str2){
    int result=0;
    try{
      Date date1 = sdf.parse(str1);
      Date date2 =sdf.parse(str2);
      Calendar aCalendar = Calendar.getInstance();
        aCalendar.setTime(date1);
        int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
        aCalendar.setTime(date2);
        int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
        result = day1-day2;
    }catch(Exception e){
      e.printStackTrace();
    }
    return result;
  }
  /**
   *
  * @Title: long2Date
  * @Description: TODO long 转日期(年-月-日 时-分-秒)
  * @param timestamp
  * @return
   */
  public static String longToDate(Long msecond){
    Date date = new Date(msecond);
    return sdfymdhms.format(date);
  }
}

PS:这里再为大家推荐几款关于日期与天数计算的在线工具供大家使用:

在线日期/天数计算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi

在线万年历日历:
http://tools.jb51.net/bianmin/wannianli

在线阴历/阳历转换工具:
http://tools.jb51.net/bianmin/yinli2yangli

更多关于java相关内容感兴趣的读者可查看本站专题:《java日期与时间操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • 基于@RequestBody和@ResponseBody及Stringify()的作用说明

    基于@RequestBody和@ResponseBody及Stringify()的作用说明

    这篇文章主要介绍了基于@RequestBody和@ResponseBody及Stringify()的作用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • JGroups实现聊天小程序

    JGroups实现聊天小程序

    这篇文章主要为大家详细介绍了JGroups实现聊天小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • SpringBoot RestTemplate请求日志打印方式

    SpringBoot RestTemplate请求日志打印方式

    这篇文章主要介绍了SpringBoot RestTemplate请求日志打印方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 详解Java数组的排序算法与二分查找法

    详解Java数组的排序算法与二分查找法

    这篇文章详细给大家介绍了Java数组的排序算法与二分查找法,文中有详细的代码示例,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-05-05
  • Java对象的四种引用方式实例分析

    Java对象的四种引用方式实例分析

    这篇文章主要介绍了Java对象的四种引用方式,简单描述了四种引用方式的概念、应用场景并结合实例形式分析了弱引用所引用对象的垃圾回收过程,需要的朋友可以参考下
    2019-08-08
  • java之阻塞队列BlockingQueue解析

    java之阻塞队列BlockingQueue解析

    这篇文章主要介绍了java之阻塞队列BlockingQueue解析,阻塞队列是一种线程安全的数据结构,用于在多线程环境下进行数据交换,它提供了一种阻塞的机制,当队列为空时,消费者线程将被阻塞,直到队列中有数据可供消费,需要的朋友可以参考下
    2023-10-10
  • 详解SpringBoot Controller接收参数的几种常用方式

    详解SpringBoot Controller接收参数的几种常用方式

    这篇文章主要介绍了详解SpringBoot Controller接收参数的几种常用方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • SpringBoot拦截器实现登录拦截的方法示例

    SpringBoot拦截器实现登录拦截的方法示例

    这篇文章主要介绍了SpringBoot拦截器实现登录拦截的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 详解SpringBoot中的tomcat优化和修改

    详解SpringBoot中的tomcat优化和修改

    这篇文章主要介绍了详解SpringBoot中的tomcat优化和修改,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java 使用keytool创建CA证书的操作

    Java 使用keytool创建CA证书的操作

    这篇文章主要介绍了Java 使用keytool创建CA证书的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01

最新评论