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

原创 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"));
               
        }

}

传智播客java就业班入学测试题(自测+答案)

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------   传智播客java就业班...
  • dsa63
  • dsa63
  • 2013年11月11日 21:40
  • 3454

黑马入学测试—基础—异常机制

异常机制已经成为判断一门编程语言是否成熟的标准,异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。           Java异常机制主要依赖于t...
  • qq_25418233
  • qq_25418233
  • 2015年11月21日 00:20
  • 134

黑马入学测试—基础—集合

javauserliststringhashmapiterator   上图是集合框架中常用的类和接口:         一、用得最多的主...
  • qq_25418233
  • qq_25418233
  • 2015年10月29日 17:56
  • 138

黑马入学测试—基础—Collection

/**          * Collection          *                 List(存取有序,有索引,可以重复)          *              ...
  • qq_25418233
  • qq_25418233
  • 2015年11月21日 00:22
  • 127

一张帖搞定同学们入学黑马前所有难题

前言:黑马程序员——上海校区,5月18日正式进驻上海,致力于打造华东最尖端的IT培训基地,解决目前华东IT人才紧缺矛盾。坚守黑马程序员“0元入学,10000元就业后,再给学费!”的郑重承诺,为同学们提...
  • yumei9
  • yumei9
  • 2015年06月09日 10:25
  • 1304

黑马入学测试一些比较难的题目

#import intadd(int p){        return (p++) + (++p);     }   inttest(int (*p)(int)){    retur...
  • wadeAD
  • wadeAD
  • 2016年04月30日 20:06
  • 2630

黑马入学测试—基础—IO流

File类  File类是IO包中唯一代表磁盘文件本事信息的类,而不是文件中的内容。定义了与平台无关的方法来操作文件。  Java中的目录被当作一种特殊的文件使用,list方法可以返回目录中的所...
  • qq_25418233
  • qq_25418233
  • 2015年10月29日 17:30
  • 152

黑马入学测试—基础—中文编码知识总结

为什么要编码呢?在计算机中存储信息的最小单位是1个字节,即8个bit。而我们平时要展现的符号太多,无法用一个字节来完全表示。所以我们构建了一个新的数据结构char,而从char到byte就必须有编码的...
  • qq_25418233
  • qq_25418233
  • 2015年11月21日 00:13
  • 184

Java基础30天(黑马)

Java基础30天:blog.csdn.net/lijinhua7602/article/category/2810931
  • miaozhenzhong
  • miaozhenzhong
  • 2016年11月08日 07:21
  • 421

黑马程序员——Java基础测试题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 黑马程序员——Java基础测试题 第1题:以下代码哪个是正确的?为什么?   a. byte...
  • liu007004
  • liu007004
  • 2015年01月16日 12:49
  • 1431
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马入学测试—基础—日期格式的工具类
举报原因:
原因补充:

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