java日期操作工具类(获取指定日期、日期转换、相隔天数)

本文实例为大家分享了java日期操作工具类,获取指定日期前一天、后一天;日期转换;两个日期之间相隔天数等工具类,供大家参考,具体内容如下

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

public class DateUtil {

  /**
   * 获得指定日期的前一天
   *
   * @param specifiedDay
   * @param format
   * @return
   * @throws Exception
   */
  public static Date getDayBefore(Date date, String format) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    int day = c.get(Calendar.DATE);
    c.set(Calendar.DATE, day - 1);

    String dayBeforeStr = new SimpleDateFormat(format).format(c.getTime());

    Date dayBefore = null;
    try {
      dayBefore = new SimpleDateFormat(format).parse(dayBeforeStr);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return dayBefore;
  }

  /**
   * 获得指定日期的后一天
   *
   * @param specifiedDay
   * @return
   */
  public static Date getDayAfter(Date date, String format) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    int day = c.get(Calendar.DATE);
    c.set(Calendar.DATE, day + 1);
    String dayAfterStr = new SimpleDateFormat(format).format(c.getTime());
    Date dayAfter = null;
    try {
      dayAfter = new SimpleDateFormat(format).parse(dayAfterStr);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return dayAfter;
  }

  /**
   * 获得指定日期的前一天
   *
   * @param specifiedDay
   * @param format
   * @return
   * @throws Exception
   */
  public static String getSpecifiedDayBefore(String specifiedDay, String format) {
    // SimpleDateFormat simpleDateFormat = new
    // SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance();
    Date date = null;
    try {
      date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    c.setTime(date);
    int day = c.get(Calendar.DATE);
    c.set(Calendar.DATE, day - 1);

    String dayBefore = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    return dayBefore;
  }

  /**
   * 获得指定日期的后一天
   *
   * @param specifiedDay
   * @return
   */
  public static String getSpecifiedDayAfter(String specifiedDay, String format) {
    Calendar c = Calendar.getInstance();
    Date date = null;
    try {
      // date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
      date = new SimpleDateFormat(format).parse(specifiedDay);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    c.setTime(date);
    int day = c.get(Calendar.DATE);
    c.set(Calendar.DATE, day + 1);

    // String dayAfter=new
    // SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    String dayAfter = new SimpleDateFormat(format).format(c.getTime());
    return dayAfter;
  }

  /**
   * 将date类型准成指定format格式的字符串
   *
   * @param day 日期
   * @param format 指定格式
   * @return
   */
  public static String date2String(Date day, String format) {
    String dateStr = new SimpleDateFormat(format).format(day.getTime());
    return dateStr;
  }

  /**
   * 将字符串转成指定格式的date类型
   *
   * @param day 日期
   * @param format 指定格式
   * @return
   */
  public static Date string2Date(String dateStr,String format) {
    Date strDate = null;
    try {
      strDate = new SimpleDateFormat(format).parse(dateStr);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return strDate;
  }

  /**
   *
  * @Title: DateDate2CompareValue
  * @Description: 两个date类型比较大小
  * @param dayAfter date类型
  * @param date   date类型
  * @param 格式化
  * @return boolean
  * @throws
   */
  public static boolean DateDate2CompareValue(Date dayAfter, Date date, String pattern) {
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    try {
      Date d1 = sdf.parse(sdf.format(dayAfter));
      Date d2 = sdf.parse(sdf.format(date));
      if(d1.getTime()>=d2.getTime()){
        return true;
      }
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return false;
  }

  /**
   * 比较两个日期年月日的大小
  * @Title: DateCompareValue
  * @Description: 一个stirng一个date类型比较大小
  * @param date1 String类型
  * @param date2 date类型
  * @param @return
  * @return boolean
  * @throws
   */
  public static boolean DateStrDateCompareValue(String date1, Date date, String pattern) {
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    try {
      Date d1 = sdf.parse(date1);
      Date d2 = sdf.parse(sdf.format(date));
      if(d1.getTime()>=d2.getTime()){
        return true;
      }
    } catch (ParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return false;
  }

  /**
   * 比较两个日期年月日的大小
  * @Title: DateStr2CompareValue
  * @Description: 两个string类型比较时间大小
  * @param date1
  * @param date2
  * @return boolean
  * @throws
   */
  @SuppressWarnings("unused")
  public static boolean DateStr2CompareValue(String date1, String date2,String pattern) {
  SimpleDateFormat sdf = new SimpleDateFormat(pattern);
  try {
    Date d1 = sdf.parse(date1);
    Date d2 = sdf.parse(date2);
    if(d1.getTime()>=d2.getTime()){
      return true;
    }
  } catch (ParseException e) {
    e.printStackTrace();
  }

    return false;
  }

  /**
   *
  * @Title: get2DateListDate
  * @date 2016年5月17日 下午2:11:48
  * @Description: 获取时间之内的 相隔天数的date集合
  * @param @param preDate 开始时间
  * @param @param nextDate 结束时间
  * @param @param format  fomat格式
  * @param @return
  * @return List<Date> 相隔天数集合
  * @throws
   */
  public static List<Date> get2DateListDate(String preDate, String nextDate, String format) {
    List<Date> list = new ArrayList<>();
    if(nextDate.equals(preDate)){//开始时间 结束时间相等就直接返回
      list.add(DateUtil.string2Date(preDate, format));
      return list;
    }
    String nexDate = DateUtil.getSpecifiedDayAfter(preDate, format);
    list.add(DateUtil.string2Date(preDate, format));
    list.add(DateUtil.string2Date(nexDate, format));
    while (!nexDate.equals(nextDate)) {
      String nextnextDate = DateUtil.getSpecifiedDayAfter(nexDate, format);
      list.add(DateUtil.string2Date(nextnextDate, format));
      nexDate = nextnextDate;
    }
    return list;
  }

  /**
   *
  * @Title: get2DateListDate
  * @date 2016年5月17日 下午2:11:48
  * @Description: 获取时间之内的 相隔天数的string集合
  * @param @param preDate 开始时间
  * @param @param nextDate 结束时间
  * @param @param format  fomat格式
  * @param @return
  * @return List<Date> 相隔天数集合
  * @throws
   */
  public static List<String> get2DateListDateStr(String preDate, String nextDate, String format) {
    List<String> list = new ArrayList<>();
    if(nextDate.equals(preDate)){//如果开始时间等于结束时间那么就是同一天
      list.add(preDate);
      return list;
    }
    String nexDate = DateUtil.getSpecifiedDayAfter(preDate, format);
    list.add(preDate);
    list.add(nexDate);
    while (!nexDate.equals(nextDate)) {
      String nextnextDate = DateUtil.getSpecifiedDayAfter(nexDate, format);
      list.add(nextnextDate);
      nexDate = nextnextDate;
    }
    return list;
  }

  /**
   *
  * @Title: get2DateListWithDate
  * @date 2016年5月26日 上午9:20:29
  * @Description: 获取两个日期之间日期的
  * @param @param startDate 开始日期 date类型
  * @param @param endDate  结束日期 date类型
  * @param @return
  * @return List<Date>  datelist
  * @throws
   */
  public static List<Date> get2DateListWithDate(Date startDate, Date endDate,String format) {
    List<Date> list = new ArrayList<>();
    if(startDate.getTime() >endDate.getTime()){
      return list;
    }
    String startDateStr = DateUtil.date2String(startDate, format);
    String endDateStr = DateUtil.date2String(endDate, format);
    if(startDateStr.equals(endDateStr)){//如果开始时间等于结束时间那么就是同一天
      list.add(startDate);
      return list;
    }
    Date nextDate = DateUtil.getDayAfter(startDate, format);
    String nextDateStr = DateUtil.date2String(nextDate, format);
    //String endDateStr = DateUtil.date2String(endDate, format);
    list.add(startDate);
    list.add(nextDate);
    while (!nextDateStr.equals(endDateStr)) {
      String nextnextDate = DateUtil.getSpecifiedDayAfter(nextDateStr, format);
      list.add(DateUtil.string2Date(nextnextDate, format));
      nextDateStr = nextnextDate;
    }

    return list;
  }

  public static void main(String[] args) throws Exception {

    /**/ String preDate = getSpecifiedDayBefore("2016-05-01", "yyyy-MM-dd");
    String nextDate = getSpecifiedDayAfter("2016-05-03", "yyyy-MM-dd");

    Date befroDay = getDayBefore(new Date(), "yyyy-MM-dd");
    Date dateAfter = getDayAfter(new Date(), "yyyy-MM-dd");

    // System.out.println("前一天:" + preDate + " 后一天:" + nextDate);
    // System.err.println("前一天:" +date2String( befroDay ,"yyyy-MM-dd")+ "
    // 后一天:" + dateAfter);

    String mat = "yyyy-MM-dd";// 这里最好从数据库中读取
    SimpleDateFormat dateTimeFormat = new SimpleDateFormat(mat);
    Date dd = DateUtil.getDayBefore(new Date(), mat);
    // Date befroDay = getDayBefore(new Date(), "yyyy-MM-dd");
    String sd = date2String(befroDay, "yyyy-MM-dd");
    String dateStr = dateTimeFormat.format(befroDay);
    // System.out.println("dateStr="+dateStr+" sd "+sd);

    //List<Date> listDate = get2DateListDate("2016-05-01", "2016-05-03", "yyyy-MM-dd");
    //List<String> listDateStr = get2DateListDateStr("2016-05-01", "2016-05-03", "yyyy-MM-dd");
    Date startDate = new Date();
    Date endDate = dateTimeFormat.parse("2016-05-31");
    List<Date> listDate = get2DateListWithDate(startDate,endDate,"yyyy-MM-dd");

    for (int i = 0; i < listDate.size(); i++) {
      System.err.println(listDate.get(i));
    }

    /*for (int i = 0; i < listDateStr.size(); i++) {
      //System.out.println(listDateStr.get(i));
    }*/

  }

以上就是本文的全部内容,希望对大家的学习java程序设计有所帮助。

(0)

相关推荐

  • java日期工具类实例分享

    复制代码 代码如下: /** * 日期工具类 * 默认使用 "yyyy-MM-dd HH:mm:ss" 格式化日期 */public final class DateUtils {/*** 英文简写(默认)如:2010-12-01*/public static String FORMAT_SHORT = "yyyy-MM-dd";/*** 英文全称  如:2010-12-01 23:15:06*/public static String FORMAT_LONG =

  • 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实现将数字日期翻译成英文单词的工具类实例

    本文实例讲述了Java实现将数字日期翻译成英文单词的工具类.分享给大家供大家参考,具体如下: package com.sunyard.etp.ag.util; import java.math.BigDecimal; import java.util.Arrays; public class DateEngUtil { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated meth

  • java日期处理工具类

    本文针对日期处理进行学习使用,主要分为两部分,下面为大家具体介绍一下 第一部分:日期处理基础知识 Date 类 作用:最主要的作用就是获得当前时间 将日期转换为标准格式 Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str = sdf.format(date); System.out.println("2015-10-16 1

  • Java日期操作方法工具类实例【包含日期比较大小,相加减,判断,验证,获取年份等】

    本文实例讲述了Java日期操作方法工具类.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.http.util.TextUtils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.regex.Patte

  • java日期操作工具类(获取指定日期、日期转换、相隔天数)

    本文实例为大家分享了java日期操作工具类,获取指定日期前一天.后一天:日期转换:两个日期之间相隔天数等工具类,供大家参考,具体内容如下 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class

  • Java中BufferedReader类获取输入输入字符串实例

    使用Scanner来取得使用者的输入很方便,但是它以空白来区隔每一个输入字符串,在某些时候并不适用,因为使用者可能输入一个字符串,中间会包括空白字元,而您希望取得完整的字符串. 您可以使用BufferedReader类别,它是java.io包中所提供的一个类,所以使用这个类时必须先import java.io包:使用BufferedReader对象的readLine()方法必须处理IOException异常(exception),异常处理机制是Java提供给程序设计人员捕捉程序中可能发生的错误所

  • Java文件操作工具类fileUtil实例【文件增删改,复制等】

    本文实例讲述了Java文件操作工具类fileUtil.分享给大家供大家参考,具体如下: package com.gcloud.common; import java.io.*; import java.net.MalformedURLException; import java.net.URL; /** * 文件工具类 * Created by charlin on 2017/9/8. */ public class FileUtil { /** * 读取文件内容 * * @param is *

  • Java使用Scanner类获取用户输入过程解析

    这篇文章主要介绍了Java使用Scanner类获取用户输入过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); Scanner 类的 next() 方法 import java.util.Scanner; class Test{ public static void main(String[] args){ String s; Sc

  • Java基于Calendar类输出指定年份和月份的日历代码实例

    这篇文章主要介绍了Java 使用Calendar类输出指定年份和月份的日历,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 package com.cyl.test3; import java.util.Calendar; import java.util.Scanner; public class RiLi { public static void main(String[] args){ int year= 2020; int mo

  • Java使用Scanner类获取用户输入实例详解

    创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); Scanner 类的 next() 方法 import java.util.Scanner; class Test{ public static void main(String[] args){ String s; Scanner userInput = new Scanner(System.in); System.out.print("Input String: ");

  • java文件操作工具类

    最近为了修改大量收藏的美剧文件名,用swing写了个小工具,代码是文件处理部分,具体内容如下 package datei.steuern; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter

  • java文件操作工具类分享(file文件工具类)

    复制代码 代码如下: import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.Fil

  • java调用未知类的指定方法简单实例

    复制代码 代码如下: /**     * 获取任意对象里面的returnMapObject的值.并且组成list     * @param <T>     * @param list     * @param fields     * @return     * @throws Exception     */    @SuppressWarnings("unchecked")    public static <T> List<Map<String

  • java文件操作工具类实现复制文件和文件合并

    两个方法:1.复制一个目录下面的所有文件和文件夹2.将一个文件目录下面的所有文本文件合并到同一个文件中 复制代码 代码如下: package com.firewolf.test; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException; public class FileReaderUtil { public static void

随机推荐