`
vipbooks
  • 浏览: 136552 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类

操作日期和时间的工具类

 
阅读更多
   大家好啊,好久没有来这里发文章了,今天来逛逛,分享一篇刚写不久的操作日期和时间的工具类,希望对大家有所帮助。

/*
 * @(#)DataFormatUtils.java 2010-10-10
 * 
 * Copyright 2010 BianJing,All rights reserved.
 */
package test;

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

/**
 * 操作日期和时间的工具类
 * 
 * @author BianJing<br/>
 *         E-mail:vipbooks@163.com
 * @version 0.1 2010-10-10
 */
public class DateUtils {
    /** 用于默认模式的常量,如:日期格式是yyyy-MM-dd,时间格式是HH:mm:ss */
    public static final int DEFAULT = DateFormat.DEFAULT;

    /** 用于 MEDIUM 模式的常量,如:日期格式是 yyyy-MM-dd,时间格式是 HH:mm:ss */
    public static final int MEDIUM = DateFormat.MEDIUM;

    /** 用于 LONG 模式的常量,如:日期格式是 yyyy年MM月dd日,时间格式是 上/下午hh时mm分ss秒 */
    public static final int LONG = DateFormat.LONG;

    /** 用于 FULL 模式的常量,如:日期格式是 yyyy年MM月dd日 星期几,时间格式是 上/下午hh时mm分ss秒 CST */
    public static final int FULL = DateFormat.FULL;

    /** 用于 SHORT 模式的常量,如:日期格式是 yy-MM-dd,时间格式是 上/下午h:mm */
    public static final int SHORT = DateFormat.SHORT;

    /**
     * 根据本地Locale将Date类型的数据格式化成指定日期+时间模式的字符串
     * 
     * @param date
     *            java.util.Date
     * @param dateStyle
     *            日期模式
     * @param timeStyle
     *            时间模式
     * @return 格式化后的Date字符串
     */
    public static String formatDateToDateTimeStr(Date date, int dateStyle, int timeStyle) {
        DateFormat dateFormat = DateFormat.getDateTimeInstance(dateStyle, timeStyle);

        return dateFormat.format(date);
    }

    /**
     * 根据本地Locale将Date类型的数据格式化成指定日期模式的字符串
     * 
     * @param date
     *            java.util.Date
     * @param dateStyle
     *            日期模式
     * @return 格式化后的Date字符串
     */
    public static String formatDateToDateStr(Date date, int dateStyle) {
        DateFormat dateFormat = DateFormat.getDateInstance(dateStyle);

        return dateFormat.format(date);
    }

    /**
     * 根据本地Locale将Date类型的数据格式化成指定时间模式的字符串
     * 
     * @param date
     *            java.util.Date
     * @param timeStyle
     *            时间模式
     * @return 格式化后的Time字符串
     */
    public static String formatDateToTimeStr(Date date, int timeStyle) {
        DateFormat dateFormat = DateFormat.getTimeInstance(timeStyle);

        return dateFormat.format(date);
    }

    /**
     * 将指定日期类型的数据格式化成指定格式的字符串<br/>
     * 日期格式参考:"yyyy-MM-dd HH:mm:ss,SS"或"yyyy-MM-dd hh:mm:ss,SS"
     * 
     * @param date
     *            要格式化的日期
     * @param pattern
     *            日期格式
     * @return 格式化后的日期字符串
     */
    public static String formatDateToPatternStr(Date date, String pattern) {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);

        return sdf.format(date);
    }

    /**
     * 根据本地Locale将Date类型的数据格式化成DateFormat.DEFAULT模式的日期+星期+时间字符串
     * 
     * @param date
     *            java.util.Date
     * @return 格式化后的Date字符串(yyyy-MM-dd week HH:mm:ss)
     */
    public static String formatDateToDateWeekTimeStr(Date date) {
        String dateWeek = formatDateToDateStr(date, FULL);
        String time = formatDateToTimeStr(date, DEFAULT);

        return dateWeek + " " + time;
    }

    /**
     * 根据本地Locale将Date类型的数据格式化成DateFormat.DEFAULT模式的日期+时间字符串
     * 
     * @param date
     *            java.util.Date
     * @return 格式化后的Date字符串(yyyy-MM-dd HH:mm:ss)
     */
    public static String formatDateToDefaultDateTimeStr(Date date) {
        return formatDateToDateTimeStr(date, DEFAULT, DEFAULT);
    }

    /**
     * 根据本地Locale将Date类型的数据格式化成DateFormat.DEFAULT模式的日期字符串
     * 
     * @param date
     *            java.util.Date
     * @return 格式化后的Date字符串(yyyy-MM-dd)
     */
    public static String formatDateToDefaultDateStr(Date date) {
        return formatDateToDateStr(date, DEFAULT);
    }

    /**
     * 根据本地Locale将Date类型的数据格式化成DateFormat.DEFAULT模式的时间字符串
     * 
     * @param date
     *            java.util.Date
     * @return 格式化后的Date字符串(HH:mm:ss)
     */
    public static String formatDateToDefaultTimeStr(Date date) {
        return formatDateToTimeStr(date, DEFAULT);
    }

    /**
     * 根据本地Locale将String类型的日期数据格式化成指定日期+时间模式的字符串
     * 
     * @param source
     *            日期字符串
     * @param dateStyle
     *            日期模式
     * @param timeStyle
     *            时间模式
     * @return 格式化后的日期字符串
     */
    public static String formatStrToDateTimeStr(String source, int dateStyle, int timeStyle) {
        DateFormat dateFormat = DateFormat.getDateTimeInstance(dateStyle, timeStyle);

        Date date = null;
        try {
            date = dateFormat.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return dateFormat.format(date);
    }

    /**
     * 根据本地Locale将String类型的日期数据格式化成指定日期模式的字符串
     * 
     * @param source
     *            日期字符串
     * @param dateStyle
     *            日期模式
     * @return 格式化后的日期字符串
     */
    public static String formatStrToDateStr(String source, int dateStyle) {
        DateFormat dateFormat = DateFormat.getDateInstance(dateStyle);

        Date date = null;
        try {
            date = dateFormat.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return dateFormat.format(date);
    }

    /**
     * 根据本地Locale将String类型的日期数据格式化成DateFormat.DEFAULT模式的日期+时间字符串
     * 
     * @param source
     *            日期字符串
     * @return 格式化后的日期字符串
     */
    public static String formatStrToDateTimeStr(String source) {
        return formatStrToDateTimeStr(source, DEFAULT, DEFAULT);
    }

    /**
     * 根据本地Locale将String类型的日期数据格式化成DateFormat.DEFAULT模式的日期字符串
     * 
     * @param source
     *            日期字符串
     * @return 格式化后的日期字符串
     */
    public static String formatStrToDateStr(String source) {
        return formatStrToDateStr(source, DEFAULT);
    }

    /**
     * 将日期字符串转换成指定格式的String类型数据<br/>
     * 日期格式参考:"yyyy-MM-dd HH:mm:ss,SS"或"yyyy-MM-dd hh:mm:ss,SS"
     * 
     * @param source
     *            日期字符串
     * @param pattern
     *            日期格式<br/>
     *            注意:source的日期格式一定要与pattern的日期格式完全一致,<br/>
     *            否则转换时可能会产生异常或转换出来的日期与原日期不一致或报错。<br/>
     *            如:formatStrToDateStr("2008-08-08 8:08:08.08","yyyy-MM-dd HH:mm:ss")
     * @return 格式化后的日期字符串
     */
    public static String formatStrToDateStr(String source, String pattern) {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);

        Date date = null;
        try {
            date = sdf.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return sdf.format(date);
    }

    /**
     * 将DateFormat.DEFAULT模式的字符串(日期+时间模式)解析成的Date类型的数据
     * 
     * @param source
     *            日期+时间格式的字符串,如:2010-10-10 10:10:10
     * @return java.util.Date
     */
    public static Date parseStrToDateTime(String source) {
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DEFAULT, DEFAULT);

        Date date = null;
        try {
            date = dateFormat.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return date;
    }

    /**
     * 将DateFormat.DEFAULT模式的字符串(日期模式)解析成的Date类型的数据
     * 
     * @param source
     *            日期格式的字符串,如:2010-10-10
     * @return java.util.Date
     */
    public static Date parseStrToDate(String source) {
        DateFormat dateFormat = DateFormat.getDateInstance(DEFAULT);

        Date date = null;
        try {
            date = dateFormat.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return date;
    }

    /**
     * 将日期字符串转换成指定格式的Date类型数据<br/>
     * 日期格式参考:"yyyy-MM-dd HH:mm:ss,SS"或"yyyy-MM-dd hh:mm:ss,SS"
     * 
     * @param source
     *            日期字符串
     * @param pattern
     *            日期格式<br/>
     *            注意:source的日期格式一定要与pattern的日期格式完全一致,<br/>
     *            否则转换时可能会产生异常或转换出来的日期与原日期不一致或报错。<br/>
     *            如:parseStrToDate("2008-08-08","yyyy-MM-dd")
     * @return 日期数据类型
     */
    public static Date parseStrToDate(String source, String pattern) {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);

        Date date = null;
        try {
            date = sdf.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return date;
    }

    /**
     * 将Date类型的数据转换成Calendar类型的数据
     * 
     * @param date
     *            java.util.Date
     * @return java.util.Calendar
     */
    public static Calendar dateToCalendar(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);

        return calendar;
    }

    /**
     * 将Calendar类型的数据转换成Date类型的数据
     * 
     * @param calendar
     *            java.util.Calendar
     * @return java.util.Date
     */
    public static Date calendarToDate(Calendar calendar) {
        return calendar.getTime();
    }

    /**
     * 计算两个日期相隔的天数
     * 
     * @param firstDate
     *            日期一
     * @param secondDate
     *            日期二
     * @return 日期二减日期一相隔的天数
     */
    public static int getDaysBetweenTwoDate(Date firstDate, Date secondDate) {
        int nDay = (int) ((secondDate.getTime() - firstDate.getTime()) / (24 * 60 * 60 * 1000));

        return nDay;
    }

    /**
     * 指定时间加、减指定的时间单位
     * 
     * @param calendarFinal
     *            Calendar类中代表时间的字段常量<br/>
     *            &nbsp;&nbsp; Calendar.YEAR 年<br/>
     *            &nbsp;&nbsp; Calendar.MONTH 月(月份从0开始)<br/>
     *            &nbsp;&nbsp; Calendar.DATE 日<br/>
     *            &nbsp;&nbsp; Calendar.HOUR 时<br/>
     *            &nbsp;&nbsp; Calendar.MINUTE 分<br/>
     *            &nbsp;&nbsp; Calendar.SECOND 秒<br/>
     * @param time
     *            指定时间
     * @param times
     *            相加或减的时间,相加传正数,相减传负数
     * @return 相加或相减后的时间
     */
    public static Date addOrMinusTimes(int calendarFinal, Date time, int times) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(time);
        calendar.add(calendarFinal, times);

        return calendar.getTime();
    }

    /**
     * 指定日期加、减指定的天数
     * 
     * @param date
     *            指定日期
     * @param days
     *            相加或减的天数,相加传正数,相减传负数
     * @return 相加或相减后的日期
     */
    public static Date addOrMinusDays(Date date, int days) {
        return addOrMinusTimes(Calendar.DATE, date, days);
    }

    /**
     * 当前日期加、减指定的天数
     * 
     * @param days
     *            相加或减的天数,相加传正数,相减传负数
     * @return 相加或相减后的日期
     */
    public static Date addOrMinusDays(int days) {
        return addOrMinusDays(new Date(), days);
    }

    /**
     * 指定日期加、减指定的月份数
     * 
     * @param date
     *            指定日期
     * @param months
     *            相加或减的月份数,相加传正数,相减传负数
     * @return 相加或相减后的日期
     */
    public static Date addOrMinusMonths(Date date, int months) {
        return addOrMinusTimes(Calendar.MONTH, date, months);
    }

    /**
     * 当前日期加、减指定的月份数
     * 
     * @param months
     *            相加或减的月份数,相加传正数,相减传负数
     * @return 相加或相减后的日期
     */
    public static Date addOrMinusMonths(int months) {
        return addOrMinusMonths(new Date(), months);
    }

    /**
     * 验证字符串是否为正确的日期格式<br/>
     * 日期格式参考:"yyyy-MM-dd HH:mm:ss,SS"或"yyyy-MM-dd hh:mm:ss,SS"
     * 
     * @param source
     *            日期字符串
     * @param pattern
     *            日期格式
     * @return boolean true:正确,false:错误
     */
    public static boolean validateDateFormat(String source, String pattern) {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        sdf.setLenient(false);

        Date date = null;
        try {
            date = sdf.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
            return false;
        }

        return source.equals(sdf.format(date));
    }
}

分享到:
评论

相关推荐

    操作日期时间的工具类,封装的比较完善

    java写的,操作日期时间的工具类,封装的比较完善,可以获取最小时间, 获取最大时间,获取今天最小时间,获取今天最大时间,获取明天的最小时间,获取明天的最大时间,获取昨天的最小时间,获取昨天的最大时间,...

    Java 日期比较工具类

    Java 日期比较工具类 各种日期操作及计算( 获取两个日期 间隔天数 间隔月数 格式化日期 )

    日期操作工具类

    日期操作工具类 /** * 将日期对象按照换为时间字符串 * 默认格式为"yyyy-MM-dd HH:mm:ss" * @param sourceTime * @return * @throws ParseException */ public static String formatDate(Date ...

    Date日期操作工具类

    Date日期处理的工具类,包括日期格式化,字符串转换成日期,对日期的【时分秒年月日】进行加/减,获取时间差,计算两个日期之间相差的天数,等各种对日期的操作

    java操作日期时间工具类

    NULL 博文链接:https://liu-jason.iteye.com/blog/1130442

    vue 字符和日期转换工具类

    vue 字符和日期转换工具类,先将util里面的公共对象抛出,全局使用

    java日期处理工具类

    日期操作工具类,主要实现了日期的常用操作。 * * 在工具类中经常使用到工具类的格式化描述,这个主要是一个日期的操作类,所以日志格式主要使用 SimpleDateFormat的定义格式. * * 格式的意义如下: 日期和...

    java最全时间工具类,针对年月日周的操作

    java时间操作工具类,已封装好,包含获取某一时间的年,月,日,星期。以及对某一时间进行年,月,日,周的加减。还有获取某一时间年,月,日,周的起始和结束时间等等

    日期的工具类UtilDate日期计算比较润年获取转化判断

    学会日期的操作 日期的工具类UtilDate 日期计算 日期比较 润年判断 日期获取和转化 日期的判断

    【强2】30个java工具类

    [工具类] 文件操作工具类 .java.txt [工具类] 序列化保存为XML文件的工具类 .java.txt [工具类] 一个压缩工具类.java.txt [工具类] 用java编写简单UDP网络通信程序 .java.txt [工具类] 中文验证.jsp.txt [工具类] ...

    30个java工具类

    [工具类] 文件操作工具类 .java.txt [工具类] 序列化保存为XML文件的工具类 .java.txt [工具类] 一个压缩工具类.java.txt [工具类] 用java编写简单UDP网络通信程序 .java.txt [工具类] 中文验证.jsp.txt [工具类] ...

    Date时间操作工具类

    Date时间操作工具类 js: 1.一个日期时间加上分钟数,得到一个新的日期时间 2.判断当前时间是否在时间段之内 3.根据默认的格式格式化时间 4.根据指定的格式格式化时间 5.改变月份 6.改变天数 7.计算天数间隔 8.Date转...

    常用的java工具类

    2.[工具类] Java中计算任意两个日期之间的工作天数 .java 3.[工具类] MD5 .java 4.[工具类] 时间工具TimeUtil.java 5.[工具类] 通信服务端simpleServer 6.[工具类] 使用Java程序来实现HTTP文件的队列下载 .java 7....

    java时间操作工具类 DateUtils

    java中常用的时间操作;如日期,时间戳,日历,字符串相互转化;时间差等常用日期功能。

    java日期时间操作工具类

    主要为大家详细介绍了java日期时间操作工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    字符串、日期、正则匹配工具类

    日期转时间,时间转日期,正则匹配,首字母转大小写,日期工具类,转ASCII码等等

    日期常用工具类,有源码。

    该工具类提供了多种日期操作方式,如计算某一日起的月底几号,向(前/后)推移推移一天/周/月/年登。有用的JAVA开发人员可以参考一下。

    时间日期处理公用类

    针对时间日期各种格式之间转换等操作的公用类。

    java操作 工具类1.0

    工具类 DateUtil(日期处理) CalendarUtil(时间处理) PinyinUtils(汉字转拼音) PropertiesFileUitl(键值对文件存取)等,继续更新

Global site tag (gtag.js) - Google Analytics