`
vipbooks
  • 浏览: 148987 次
  • 性别: 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 8及更高版本中,可以考虑利用`java.time`包提供的新特性来进一步优化工具类的设计。

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

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

    Date日期操作工具类

    6. **其他操作**:除了上述功能,工具类还可能包含其他实用方法,如检查日期是否在某个范围内、获取当前日期和时间、获取日期的某一部分(如月份、星期几)等。 在提供的压缩包文件`DateUtils.java`中,我们可以...

    Java 日期比较工具类

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

    java时间日期格式化工具类

    `DateUtil`工具类则通过封装这些类的功能,提供了一种更加便捷的方式来处理日期和时间,降低了代码的重复性,并提升了开发效率。在实际项目中,合理利用这样的工具类可以使代码更加整洁,降低出错的可能性。

    java操作时间工具类

    Java操作时间工具类是开发者日常工作中经常会用到的模块,特别是在处理日期和时间相关的业务逻辑时。本工具类主要是为了方便地对日期和时间进行格式化、比较、计算等操作,提高开发效率。下面我们将详细探讨Java中...

    Java日期工具类,Java时间工具类,Java时间格式化

    本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...

    java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒

    这篇博客文章“java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒”提供了一个实用的工具类,帮助开发者更方便地处理日期和时间差异。下面将详细解释这个工具类中的关键知识点。 1. **Java...

    日期处理工具类

    在Java编程语言中,日期处理是一项常见的任务,用于管理和操作日期和时间。为了方便开发者,Java提供了多种工具类来处理日期。"日期处理工具类"通常是指一个自定义的类,它封装了一些常用的方法,例如日期格式化、...

    日期操作工具类

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

    日期转换工具类

    - 参数:`dateTimeStr`(需要转换的日期时间字符串)和`formatStr`(日期时间格式字符串)。 - 功能:将字符串格式的日期时间转换为`java.util.Date`类型。 - 实现:通过`DateTimeFormat.forPattern(formatStr)`...

    最全的java时间(日期)工具类

    本文将深入探讨Java中的日期时间工具类,特别是基于给定的"DateUtil.java"文件,我们将聚焦在传统`java.util.Date`和`java.text.SimpleDateFormat`以及Java 8的`java.time`包中的相关类。 首先,我们来看看`java....

    时间日期工具类(包含java8新特性).zip

    在Java编程中,时间日期处理是一项常见的任务,尤其是在SpringBoot框架中。...通过学习和使用这些工具类,我们可以更好地管理和操作应用程序中的日期时间数据,避免重复编写相同的日期时间处理代码。

    vue 字符和日期转换工具类

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

    时间格式化工具类

    4. **日期时间操作**:添加或减去天数、小时、分钟等。 ```java public static LocalDateTime addDays(LocalDateTime dateTime, int days) { return dateTime.plusDays(days); } public static LocalDateTime ...

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

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

    iOS日期格式化工具类

    工具类可能会实现一个方法,如`uniqueDateString()`,它会生成一个基于当前日期和时间的字符串,并确保在序列中是唯一的。这可能涉及到添加一些额外的信息,如毫秒数,或者结合设备的UUID来确保全局唯一性。 ```...

    java操作工具类

    4. **日期时间工具类**: 这类工具类通常提供了日期时间的格式化、解析、比较、计算等功能,以简化对`Date`和`Calendar`的操作。例如,`DateUtils`可以方便地进行日期时间的加减操作,`DateFormatUtils`则用于格式化...

Global site tag (gtag.js) - Google Analytics