黑马入学测试—基础—日期格式的工具类

原创 2015年11月21日 00:12:27
package cn.itcast;

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

/**
* 日期格式的工具类,提供一些常用的操作日期类型数据的方法。
*/
public class DateUtil {

        /**
         * 根据给定的日期格式将日期字符串解析为日期对象
         *
         * @param dateString
         *            日期字符串
         * @param pattern
         *            给定的日期格式,如果为NULL则默认使用"yyyy-MM-dd HH:mm:ss"格式
         * @return Date 解析后的日期
         */
        public static Date convertStringToDate(String dateString, String pattern) {
                Date date = null;
                if (pattern == null || pattern.trim().equals("")) {
                        pattern = "yyyy-MM-dd HH:mm:ss";
                }
                SimpleDateFormat sdf = new SimpleDateFormat(pattern);

                try {
                        date = sdf.parse(dateString);
                } catch (ParseException e) {
                        e.printStackTrace();
                }
                return date;
        }

        /**
         * 采用默认的"yyyy-MM-dd HH:mm:ss"格式,将日期字符串解析为日期对象
         *
         * @param dateString
         *            日期字符串
         * @return 解析后的日期
         */
        public static Date convertStringToDate(String dateString) {
                return convertStringToDate(dateString, "yyyy-MM-dd HH:mm:ss");
        }

        /**
         * 根据给定的日期格式将日期解析为日期字符串
         *
         * @param date
         *            日期
         * @param pattern
         *            给定的日期格式,如果为NULL则默认使用"yyyy-MM-dd HH:mm:ss"格式
         * @return String 解析后的日期字符串
         */
        public static String convertDateToString(Date date, String pattern) {
                String dateString = null;
                if (pattern == null || pattern.trim().equals("")) {
                        pattern = "yyyy-MM-dd HH:mm:ss";
                }
                SimpleDateFormat sdf = new SimpleDateFormat(pattern);
                dateString = sdf.format(date);
                return dateString;
        }

        /**
         * 采用默认的"yyyy-MM-dd HH:mm:ss"格式,将日期解析为日期字符串
         *
         * @param date
         *            日期
         * @return String 解析后的日期字符串
         */
        public static String convertDateToString(Date date) {
                return convertDateToString(date, "yyyy-MM-dd HH:mm:ss");
        }

        /**
         * 根据给定的日期格式,比较两个字符串格式日期的大小
         *
         * @param date1
         *            日期字符串1
         * @param date2
         *            日期字符串 2
         * @param pattern
         *            日期格式(如果为空,默认"yyyy-MM-dd HH:mm:ss")
         * @return
         *                 如果参数 date2 等于 date1,则返回值 0;
         *                 如果 date1 在 date2 参数之前,则返回小于 0 的值;
         *                 如果 date1 在 date2 参数之后,则返回大于 0 的值。
         * @throws ParseException
         */
        public static int compareDateThan(String date1, String date2, String pattern) throws ParseException {

                if (pattern == null || pattern.trim().equals("")) {
                        pattern = "yyyy-MM-dd HH:mm:ss";
                }
                SimpleDateFormat sdf = new SimpleDateFormat(pattern);
                return sdf.parse(date1).compareTo(sdf.parse(date2));
        }

        /**
         * 计算两个日期之间相差的天数
         *
         * @param smdate
         *            较小的时间
         * @param bdate
         *            较大的时间
         * @return 相差天数
         * @throws ParseException
         * @throws NumberFormatException
         */
        public static int daysBetween(Date smdate, Date bdate)
                        throws ParseException, NumberFormatException {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                smdate = sdf.parse(sdf.format(smdate));
                bdate = sdf.parse(sdf.format(bdate));
                Calendar cal = Calendar.getInstance();
                cal.setTime(smdate);
                long time1 = cal.getTimeInMillis();
                cal.setTime(bdate);
                long time2 = cal.getTimeInMillis();
                long between_days = (time2 - time1) / (1000 * 3600 * 24);

                return Integer.parseInt(String.valueOf(between_days));
        }

        /**
         * 计算两个字符串的日期之间相差的天数
         *
         * @param smdate
         *            较小的时间
         * @param bdate
         *            较大的时间
         * @return 相差天数
         * @throws ParseException
         */
        public static int daysBetween(String smdate, String bdate)
                        throws ParseException {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                Calendar cal = Calendar.getInstance();
                cal.setTime(sdf.parse(smdate));
                long time1 = cal.getTimeInMillis();
                cal.setTime(sdf.parse(bdate));
                long time2 = cal.getTimeInMillis();
                long between_days = (time2 - time1) / (1000 * 3600 * 24);

                return Integer.parseInt(String.valueOf(between_days));
        }

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

                String s1 = "2015-4-1";

                String s2 = "2015-1-13";

                System.out.println(DateUtil.daysBetween(s2, s1));
               
                System.out.println(DateUtil.compareDateThan(s1, s2, "yyyy-MM-dd"));
               
        }

}

相关文章推荐

封装了常用的日期格式工具类

  • 2011年03月29日 23:28
  • 10KB
  • 下载

java日期格式转换工具类

package com.ace.backoffice.utils; import java.text.ParseException; import java.text.SimpleDateForma...

日期格式转换【工具类】

string与日期型 互转

把内容写入指定目录指定文件的java文件工具类,支持日期格式目录名的生成

把内容写入指定目录指定文件的java文件工具类,支持日期格式目录名的生成,实用工具...
  • 5iasp
  • 5iasp
  • 2013年08月30日 18:14
  • 2821

日期格式转换工具类

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

黑马程序员—【Java基础篇】之集合框架工具类

------- android培训、java培训、期待与您交流! ---------     伙伴们,这篇主要介绍集合框架工具类,讲解和分享的主要有2个类,分别是:Collections和Array...
  • WL8721
  • WL8721
  • 2015年04月27日 18:46
  • 379

Java常见日期格式及日期的计算工具类

Java 获取指定时间的日期,日期相差天数的计算

黑马程序员—Java集合框架及Java中的几个工具类

9.集合类   特点: 1)对象封装数据,对象多了也需要存储。集合用于存储对象。 2)对象的个数确定可以使用数组,但是不确定怎么办?可以用集合。因为集合是可变长度的。   集合和数组的区别...

黑马程序员—Arrays工具类,数组的高级操作,基本数据类型包装类

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-数组的高级操作 (1)数组:存储同一种数据类型的多个元素的容器。 (2)特点:每个元素都有从0...

Java_基础—Arrays工具类的asList()方法的使用

* A:案例演示 * Arrays工具类的asList()方法的使用 * Collection中toArray(T[] a)泛型版的集合转数组...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马入学测试—基础—日期格式的工具类
举报原因:
原因补充:

(最多只允许输入30个字)