日期时间工具类
2015-08-13 10:35
330 查看
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import com.sxd.da.base.exception.UncheckedException;
/**
* 日期时间工具类。
*/
public class DateUtils {
public static final String TO_MONTH = "yyyy-MM";
public static final String TO_DATE = "yyyy-MM-dd";
public static final String TO_DATE_CN = "yyyy年MM月dd日";
public static final String TO_MINUTE = "yyyy-MM-dd HH:mm";
public static final String TO_SECOND = "yyyy-MM-dd HH:mm:ss";
public static final String TO_MILLISECOND = "yyyy-MM-dd HH:mm:ss SSSS";
public static final String[] FORMATS = new String[] { TO_DATE, TO_MONTH,
TO_MINUTE, TO_SECOND, TO_MILLISECOND };
public static final String TO_MONTH_N = "yyyyMM";
public static final String TO_DATE_N = "yyyyMMdd";
public static final String TO_MINUTE_N = "yyyyMMddHHmm";
public static final String TO_SECOND_N = "yyyyMMddHHmmss";
public static final String TO_MILLISECOND_N = "yyyyMMddHHmmssSSSS";
/**
* 将字符串解析成Date对象。该方法尝试用[{@link #TO_MONTH}/{@link #TO_DATE}/
* {@link #TO_MINUTE}/{@link #TO_SECOND}/{@link #TO_MILLISECOND}
* ]格式进行解析,如果无法解析将抛出异常。<br/>
* 该方法遍历五种日期格式,效率较低。如果你明确知道字符串的日期格式应调用 {@link #parse(String, String)}方法。
*
* @param str
* 字符串
* @return 返回对应的Date对象。
*/
public static Date parse(String str) {
String pattern = getDateFormat(str);
return parse(str, pattern);
}
/**
* 将指定格式的字符串解析成Date对象。
*
* @param str
* 字符串
* @param format
* 格式
* @return 返回对应的Date对象。
*/
public static Date parse(String str, String format) {
SimpleDateFormat parser = new SimpleDateFormat(format);
try {
return parser.parse(str);
} catch (ParseException e) {
throw new UncheckedException("将字符串解析为Date对象时发生异常", e);
}
}
/**
* 将Date对象解析成yyyy-MM-dd格式的字符串。
*
* @param date
* Date对象
* @return 返回yyyy-MM-dd格式的字符串。
*/
public static String format(Date date) {
return format(date, TO_DATE);
}
/**
* 将Date对象解析成指定格式的字符串。
*
* @param date
* Date对象
* @param pattern
* 格式
* @return 返回指定格式的字符串。
*/
public static String format(Date date, String pattern) {
SimpleDateFormat formater = new SimpleDateFormat(pattern);
return formater.format(date);
}
/**
* 获取字符串的日期格式。如果字符串不在[{@link #TO_MONTH}/{@link #TO_DATE}/ {@link #TO_MINUTE}
* /{@link #TO_SECOND}/{@link #TO_MILLISECOND} ]格式范围内将抛出异常。
*
* @param str
* 字符串
* @return 返回字符串的日期格式。
*/
public static String getDateFormat(String str) {
for (String format : FORMATS) {
if (isDate(str, format)) {
return format;
}
}
throw new IllegalArgumentException("不支持的日期格式:" + str);
}
/**
* 判断字符串是否为日期格式的字符串。
*
* @param str
* 字符串
* @return 如果是日期格式的字符串返回true,否则返回false。
*/
public static Boolean isDate(String str) {
for (String format : FORMATS) {
if (isDate(str, format)) {
return true;
}
}
return false;
}
/**
* 判断字符串是否为指定日期格式的字符串。
*
* @param str
* 字符串
* @param format
* 日期格式
* @return 如果是指定日期格式的字符串返回true,否则返回false。
*/
public static Boolean isDate(String str, String format) {
try {
parse(str, format);
return true;
} catch (UncheckedException e) {
return false;
}
}
/**
* 获取当前日期(只取到日期,时间部分都为0)。
*
* @return 返回当前日期。
*/
public static Date getToday() {
return parse(format(new Date()), TO_DATE);
}
/**
* 获取当前日期(带时间,到秒)
* @return 返回当前日期。
*/
public static Date getNow() {
return new Date();
}
/**
* 日期加指定天数
*
* @param d
* @param day
* @return
* @throws Exception
*/
public static Date addDate(Date d, long day) throws Exception {
long time = d.getTime();
day = day * 24 * 60 * 60 * 1000;
time += day;
return new Date(time);
}
/**
* 获取指定日期的下一天日期。
*
* @param date
* 指定日期
* @return 返回指定日期的下一天日期。
*/
public static Date getNextDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, 1);
date = calendar.getTime();
return date;
}
/**
* 获取用户转入时间增加一定天数后的时间
* @param date
* @param days
* @return
* @since 2014-4-1
* @author Sunm
*/
public static Date addDate(Date date,int days) {
if(date!=null) {
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, days);
Date returnDate=calendar.getTime();
return returnDate;
}
return null;
}
}
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import com.sxd.da.base.exception.UncheckedException;
/**
* 日期时间工具类。
*/
public class DateUtils {
public static final String TO_MONTH = "yyyy-MM";
public static final String TO_DATE = "yyyy-MM-dd";
public static final String TO_DATE_CN = "yyyy年MM月dd日";
public static final String TO_MINUTE = "yyyy-MM-dd HH:mm";
public static final String TO_SECOND = "yyyy-MM-dd HH:mm:ss";
public static final String TO_MILLISECOND = "yyyy-MM-dd HH:mm:ss SSSS";
public static final String[] FORMATS = new String[] { TO_DATE, TO_MONTH,
TO_MINUTE, TO_SECOND, TO_MILLISECOND };
public static final String TO_MONTH_N = "yyyyMM";
public static final String TO_DATE_N = "yyyyMMdd";
public static final String TO_MINUTE_N = "yyyyMMddHHmm";
public static final String TO_SECOND_N = "yyyyMMddHHmmss";
public static final String TO_MILLISECOND_N = "yyyyMMddHHmmssSSSS";
/**
* 将字符串解析成Date对象。该方法尝试用[{@link #TO_MONTH}/{@link #TO_DATE}/
* {@link #TO_MINUTE}/{@link #TO_SECOND}/{@link #TO_MILLISECOND}
* ]格式进行解析,如果无法解析将抛出异常。<br/>
* 该方法遍历五种日期格式,效率较低。如果你明确知道字符串的日期格式应调用 {@link #parse(String, String)}方法。
*
* @param str
* 字符串
* @return 返回对应的Date对象。
*/
public static Date parse(String str) {
String pattern = getDateFormat(str);
return parse(str, pattern);
}
/**
* 将指定格式的字符串解析成Date对象。
*
* @param str
* 字符串
* @param format
* 格式
* @return 返回对应的Date对象。
*/
public static Date parse(String str, String format) {
SimpleDateFormat parser = new SimpleDateFormat(format);
try {
return parser.parse(str);
} catch (ParseException e) {
throw new UncheckedException("将字符串解析为Date对象时发生异常", e);
}
}
/**
* 将Date对象解析成yyyy-MM-dd格式的字符串。
*
* @param date
* Date对象
* @return 返回yyyy-MM-dd格式的字符串。
*/
public static String format(Date date) {
return format(date, TO_DATE);
}
/**
* 将Date对象解析成指定格式的字符串。
*
* @param date
* Date对象
* @param pattern
* 格式
* @return 返回指定格式的字符串。
*/
public static String format(Date date, String pattern) {
SimpleDateFormat formater = new SimpleDateFormat(pattern);
return formater.format(date);
}
/**
* 获取字符串的日期格式。如果字符串不在[{@link #TO_MONTH}/{@link #TO_DATE}/ {@link #TO_MINUTE}
* /{@link #TO_SECOND}/{@link #TO_MILLISECOND} ]格式范围内将抛出异常。
*
* @param str
* 字符串
* @return 返回字符串的日期格式。
*/
public static String getDateFormat(String str) {
for (String format : FORMATS) {
if (isDate(str, format)) {
return format;
}
}
throw new IllegalArgumentException("不支持的日期格式:" + str);
}
/**
* 判断字符串是否为日期格式的字符串。
*
* @param str
* 字符串
* @return 如果是日期格式的字符串返回true,否则返回false。
*/
public static Boolean isDate(String str) {
for (String format : FORMATS) {
if (isDate(str, format)) {
return true;
}
}
return false;
}
/**
* 判断字符串是否为指定日期格式的字符串。
*
* @param str
* 字符串
* @param format
* 日期格式
* @return 如果是指定日期格式的字符串返回true,否则返回false。
*/
public static Boolean isDate(String str, String format) {
try {
parse(str, format);
return true;
} catch (UncheckedException e) {
return false;
}
}
/**
* 获取当前日期(只取到日期,时间部分都为0)。
*
* @return 返回当前日期。
*/
public static Date getToday() {
return parse(format(new Date()), TO_DATE);
}
/**
* 获取当前日期(带时间,到秒)
* @return 返回当前日期。
*/
public static Date getNow() {
return new Date();
}
/**
* 日期加指定天数
*
* @param d
* @param day
* @return
* @throws Exception
*/
public static Date addDate(Date d, long day) throws Exception {
long time = d.getTime();
day = day * 24 * 60 * 60 * 1000;
time += day;
return new Date(time);
}
/**
* 获取指定日期的下一天日期。
*
* @param date
* 指定日期
* @return 返回指定日期的下一天日期。
*/
public static Date getNextDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, 1);
date = calendar.getTime();
return date;
}
/**
* 获取用户转入时间增加一定天数后的时间
* @param date
* @param days
* @return
* @since 2014-4-1
* @author Sunm
*/
public static Date addDate(Date date,int days) {
if(date!=null) {
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, days);
Date returnDate=calendar.getTime();
return returnDate;
}
return null;
}
}
相关文章推荐
- 如何在 Linux 上安装、配置 NTP 服务器和客户端?
- Chrony:一个类 Unix 系统上 NTP 客户端和服务器替代品
- DB2 日期和时间的函数应用说明
- flex actionScript时间处理相加返回相加后的date
- C#、ASP.NET通用扩展工具类之TypeParse
- Delphi实现读取系统时间与日期完整实例
- Lua常用时间函数使用实例
- asp格式化日期时间格式的代码
- Powershell小技巧之通过EventLog查看近期电脑开机和关机时间
- C#、ASP.NET通用扩展工具类之LogicSugar
- 比较简洁的JavaScript 实时显示时间的脚本 修正版
- C#、ASP.NET通用工具类IsWhat?(可以判断数字、身份证、数据类型等等)
- C#简单读取、改变文件的创建、修改及访问时间的方法
- C语言循环结构与时间函数用法实例教程
- C#获取指定目录最后写入时间的方法
- php mssql 时间格式问题
- php实现的Timer页面运行时间监测类
- sqlite时间戳转时间语句(时间转时间戳)
- 页面导出为Excel的时间格式的问题
- Javascript中的getUTCHours()方法使用详解