日期工具类
2015-04-11 00:00
204 查看
摘要: 这个工具类提供了常用的日期转换方法
package com.yaphis.util.date; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * 时间工具类 * * @author huangchunhui 2014-1-15 下午7:58:03 */ public class DateUtil { /** * yyyy-MM-dd HH:mm:ss */ public static final String SP1 = "yyyy-MM-dd HH:mm:ss"; /** * yyyyMMddHHmmss */ public static final String SP2 = "yyyyMMddHHmmss"; /** * yyyy-MM-dd */ public static final String SP3 = "yyyy-MM-dd"; /** * yyyyMMdd */ public static final String SP4 = "yyyyMMdd"; /** * 将时间以指定格式格式化 * * @param time 待转换时间 * @param formatStrBefore 转换前时间格式 * @param formatStrAfter 转换后时间格式 * @return * @throws Exception */ public static String parseTime(String time, String formatStrBefore, String formatStrAfter) throws ParseException { SimpleDateFormat bfSp = new SimpleDateFormat(formatStrBefore); SimpleDateFormat afSp = new SimpleDateFormat(formatStrAfter); return afSp.format(bfSp.parse(time)); } /** * 比较时间前后 * * @param time1 时间1 * @param time2 时间2 * @param formatStr 时间格式 * @return 时间1比时间2早则返回1 时间1比时间2晚则返回-1 时间1等于时间2则返回0 * @throws ParseException */ public static int compareTime(String time1, String time2, String formatStr) throws ParseException { SimpleDateFormat sp = new SimpleDateFormat(formatStr); Date date1 = sp.parse(time1); Date date2 = sp.parse(time2); if (date1.before(date2)) { return 1; } else if (date1.after(date2)) { return -1; } else { return 0; } } /** * 获得指定格式的当前时间 * * @param formatStr 时间格式 * @return */ public static String getCurrentTime(String formatStr) { SimpleDateFormat sp = new SimpleDateFormat(formatStr); return sp.format(new Date()); } /** * 获取指定格式的某时间,例如1小时前 或者1小时后 * * @param field 例如Calendar.DAY_OF_MONTH * @param amount 整数 例如-1 * @param formatStr 时间格式 * @return */ public static String getTimeAfter(int field, int amount, String formatStr) { Calendar cal = Calendar.getInstance(); cal.add(field, amount); SimpleDateFormat sp = new SimpleDateFormat(formatStr); return sp.format(cal.getTime()); } /** * 获取当月第一天 * * @param formatStr * @return */ public static String getFirstDayOfMonth(String formatStr) { SimpleDateFormat sp = new SimpleDateFormat(formatStr); Calendar date = Calendar.getInstance();// 今天 date.set(Calendar.DAY_OF_MONTH, 1);// 设置日期为本月第1天 date.set(Calendar.HOUR_OF_DAY, 0);// 设置时 date.set(Calendar.MINUTE, 0);// 设置分 date.set(Calendar.SECOND, 0);// 设置秒 return sp.format(date.getTime()); } /** * 日期/时间 计算 这个方法只能对yyyy-MM-dd HH:mm:ss 格式的时间进行运算 * <p> * 该方法已经由calculateTime(String time,String formatStr, String addpart, int num) 取代,为做兼容没有删掉 * * @param time 待计算时间 * @param addpart 可选 Y M D H F S * @param num 增加或者减少量(整数) * @return * @throws Exception */ @Deprecated public static String calculateTime(String time, String addpart, int num) throws ParseException { DateFormat yyyyMMddHHmmssDateFormat = new SimpleDateFormat(SP1); GregorianCalendar cal = new GregorianCalendar(); cal.setTime(yyyyMMddHHmmssDateFormat.parse(time)); if (addpart.equalsIgnoreCase("Y")) { cal.add(Calendar.YEAR, num); } else if (addpart.equalsIgnoreCase("M")) { cal.add(Calendar.MONTH, num); } else if (addpart.equalsIgnoreCase("D")) { cal.add(Calendar.DATE, num); } else if (addpart.equalsIgnoreCase("H")) { cal.add(Calendar.HOUR, num); } else if (addpart.equalsIgnoreCase("F")) { cal.add(Calendar.MINUTE, num); } else if (addpart.equalsIgnoreCase("S")) { cal.add(Calendar.SECOND, num); } return yyyyMMddHHmmssDateFormat.format(cal.getTime()); } /** * 日期/时间 计算 * * @param time 待计算时间 * @param formatStr 时间格式 * @param addpart 可选 Y M D H F S * @param num 增加或者减少量(整数) * @return * @throws Exception */ public static String calculateTime(String time, String formatStr, String addpart, int num) throws ParseException { DateFormat dateFormat = new SimpleDateFormat(formatStr); GregorianCalendar cal = new GregorianCalendar(); cal.setTime(dateFormat.parse(time)); if (addpart.equalsIgnoreCase("Y")) { cal.add(Calendar.YEAR, num); } else if (addpart.equalsIgnoreCase("M")) { cal.add(Calendar.MONTH, num); } else if (addpart.equalsIgnoreCase("D")) { cal.add(Calendar.DATE, num); } else if (addpart.equalsIgnoreCase("H")) { cal.add(Calendar.HOUR, num); } else if (addpart.equalsIgnoreCase("F")) { cal.add(Calendar.MINUTE, num); } else if (addpart.equalsIgnoreCase("S")) { cal.add(Calendar.SECOND, num); } return dateFormat.format(cal.getTime()); } /** * 返回两个时间之间的差(毫秒数) * * @param time1 * @param time2 * @param formatStr * @return * @throws ParseException */ public static long dateDiffer(String time1, String time2, String formatStr) throws ParseException { SimpleDateFormat sp = new SimpleDateFormat(formatStr); Date date1 = sp.parse(time1); Date date2 = sp.parse(time2); long differ = Math.abs(date1.getTime() - date2.getTime()); return differ; } }
相关文章推荐
- spring mvc4的日期/数字格式化、枚举转换示例
- spring mvc 日期转换 注解形式
- sql server 日期取部分转换成字符串的整理
- 将字符串或日期转换成年月日的格式,js方法
- python日期转换
- java中的日期在数据库和页面之间的相互转换
- OCP-1Z0-051 第88题 日期格式转换
- OCP-1Z0-051 第89题 日期格式及转换
- java时间格式化转换与数据库时间格式化转换
- JAVA中关于日期的转换和加减
- 日期转换【JAVA】
- Freemarker中的日期转换
- Freemarker中的日期转换
- 正则表达式实现将MM/DD/YYYY格式的日期转换为YYYY-MM-DD格式
- Oracle中to_date和to_char用法
- javascript将时间和日期字符串转换为时间戳
- 利用SimpleDateFormat进行日期格式转换
- 日期格式转换【工具类】
- 日期写入数据库没有时分秒的解决方案
- Android分享之时间日期转换工具类DateTime