工具类-日期工具类
来源:互联网 发布:泰国国王科技大学知乎 编辑:程序博客网 时间:2024/05/18 07:02
JAVA日期处理工具类
public class DateHelper {// private Calendar calendar = Calendar.getInstance(); // 每天的毫秒数: 86400000 private final static int dayMilliseconds = 86400000; /** * 得到日期的年 * * @param date * @return Long */ public static Long getYearFromDate(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int year = calendar.get(Calendar.YEAR); return Long.valueOf(year); } /** * 得到日期的月 * * @param date * @return Long */ public static Long getMonthFromDate(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int month = calendar.get(Calendar.MONTH) + 1; return Long.valueOf(month); } /** * 得到日期的日 * * @param date * @return Long */ public static Long getDayFromDate(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int day = calendar.get(Calendar.DATE); return Long.valueOf(day); } /** * 从年和月得到日期 * * @param year * @param month * @return Date * @throws ParseException */ static public Date getDateFromYearMonth(Long year, Long month) throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = month.toString(); if (month.longValue() < 10) dateStr = "0" + dateStr; dateStr = year.toString() + "-" + dateStr + "-01"; Date date = dateFormat.parse(dateStr); return date; } /** * 从年月日得到日期 * * @param year * @param month * @return Date * @throws ParseException */ static public Date getDateFromYearMonthDay(Long year, Long month, Long day) throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = month.toString(); String dayStr = day.toString(); if (month.longValue() < 10) dateStr = "0" + dateStr; if (day.longValue() < 10) dayStr = "0" + dayStr; dateStr = year.toString() + "-" + dateStr + "-" + dayStr; Date date = dateFormat.parse(dateStr); return date; } /** * 得到两个日期间的天数 * * @param firstDate * @param lastDate * @return int */ static public int getDaysOfDates(Date firstDate, Date lastDate) { return (int) ((lastDate.getTime() - firstDate.getTime()) / dayMilliseconds); } /** * 日期加指定月数 * * @param date * @param months * @return Date */ static public Date addMonths(Date date, int months) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, months); return calendar.getTime(); } /** * 日期加指定天数 * * @param date * @param hour * @return Date */ static public Date addHour(Date date, int hour) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.HOUR, hour); return calendar.getTime(); } /** * 日期加指定天数 * * @param date * @param days * @return Date */ static public Date addDays(Date date, int days) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE, days); return calendar.getTime(); } /** * 得到时间间的花费时间 * * @param startDate * @param endDate * @return String */ static public String calculateTimesStringOfDatesBetween(Date startDate, Date endDate) { long costTime = (endDate.getTime() - startDate.getTime()) / 1000; String costTimeStr = null; if (costTime < 60) costTimeStr = costTime + "秒"; else if (costTime < 3600) costTimeStr = (costTime / 60) + "分" + costTime % 60 + "秒"; else costTimeStr = (costTime / 3600) + "小时" + ((costTime - (costTime / 3600) * 3600) / 60) + "分" + costTime % 60 + "秒"; return costTimeStr; } /** * 得到时间间的花费时间 * * @param startDate * @param endDate * @return String */ static public String getTimesLongOfDatesBetween(Date startDate, Date endDate) { long costTime = (endDate.getTime() - startDate.getTime()) / 1000; String costTimeStr = null; if (costTime < 60) costTimeStr = costTime + "秒"; else if (costTime < 3600) costTimeStr = (costTime / 60) + "分" + costTime % 60 + "秒"; else costTimeStr = (costTime / 3600) + "小时" + ((costTime - (costTime / 3600) * 3600) / 60) + "分" + costTime % 60 + "秒"; return costTimeStr; } /** * 格式化日期:yyyy-MM-dd * * @param date * @return String */ static public String formatDate(Date date) { if(null!=date) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); return dateFormat.format(date); }else{ return ""; } } /** * 格式化日期:yyyy-MM-dd hh:mm:ss * * @param date * @return String */ static public String formatDateTime(Date date) { if(null!=date) { SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); return dateFormat.format(date); }else{ return ""; } } /** 字符串转换到时间格式 * @param dateStr 需要转换的字符串 * @param formatStr 需要格式的目标字符串 举例 yyyy-MM-dd * @return Date 返回转换后的时间 * @throws ParseException 转换异常 */ public static Date StringToDate(String dateStr,String formatStr) throws ParseException{ DateFormat sdf=new SimpleDateFormat(formatStr); Date date=null; date = sdf.parse(dateStr); return date; } /** * 字符串转换到时间格式 * @param dateStr * @return * @throws ParseException */ public static Date String2Date(String dateStr) throws ParseException{ DateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date date=null; if(StringUtils.isNotBlank(dateStr)){ date = sdf.parse(dateStr); } return date; } /** * 按日期格式定义格式化日期 * * @param date * @param format * @return String */ static public String formatDateTime(Date date, String format) { SimpleDateFormat dateFormat = new SimpleDateFormat(format); return dateFormat.format(date); } /** * 从日期格式串返回日期 * * @param dateStr * 日期格式串 * @param format * 日期格式定义 * @return * @throws ParseException */ static public Date getDateFromString(String dateStr, String format) throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat(format); if(dateStr.trim().equals("")){ return null; }else{ return dateFormat.parse(dateStr); } } /** * 生成用于文件名称的日期字符串 * * @param date * @return */ static public String formatDateTimeForFileName(Date date) { SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd-HH-mm-ss"); return dateFormat.format(date); } /** * 返回时间段,暂定为20--20 * * @param date * @return Date[] size=2,begin and end date * @throws ParseException */ static public Date[] getScopeDate(Date date) throws ParseException { Date[] row = new Date[2]; Long y = getYearFromDate(date); Long m = getMonthFromDate(date); Date date1 = getDateFromYearMonthDay(y, Long.valueOf(m.longValue() - 1), Long.valueOf(20)); Date date2 = getDateFromYearMonthDay(y, m, Long.valueOf(20)); row[0] = date1; row[1] = date2; return row; } static public String getTime(String formet){ SimpleDateFormat formatter = new SimpleDateFormat (formet); Date curDate = new Date(System.currentTimeMillis());//获取当前时间 String str = formatter.format(curDate); //System.out.println(str); return str; }; static public String getYesterdayTime(String formet){ SimpleDateFormat formatter = new SimpleDateFormat (formet); Date curDate = new Date(System.currentTimeMillis());//获取当前时间 Calendar cal = Calendar.getInstance(); cal.setTime(curDate); cal.add(Calendar.DATE, -1); Date yesterday =cal.getTime();//昨天 String str = formatter.format(yesterday); return str; }; //日期格式验证 public static boolean isDate(String str) { //严格验证时间格式的(匹配[2002-01-31], [1997-04-30], [2004-01-01])不匹配([2002-01-32], [2003-02-29], [04-01-01]) //String regex = "^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$"; //没加时间验证的YYYY-MM-DD String regex = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$"; //加了时间验证的YYYY-MM-DD 00:00:00 // String regex = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); return matcher.matches(); } //计算两个日期之间相差几天 public static int dayCount(String startTime, String endTime) throws ParseException{ //按照传入的格式生成一个simpledateformate对象 SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); long nd = 1000*24*60*60;//一天的毫秒数 long diff; long day = 0; //获得两个时间的毫秒时间差异 diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime(); day = diff/nd;//计算差多少天 return (int)day; } //判断时间date1是否在时间date2之前 //时间格式 2005-4-21 16:16 public static boolean isDateBefore(String date1,String date2) throws ParseException{ DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm"); Boolean bn=false; Date d1=df.parse(date1); Date d2=df.parse(date2); if(d1.getTime()<d2.getTime()){ bn= true; } else if(d1.getTime()>d2.getTime()){ bn= false; } return bn; } public static void main(String[] args) throws ParseException {// System.out.println("formatDate:"+formatDate(new Date()));// System.out.println(DateUtil.parseDate(formatDate(new Date())));// System.out.println("formatDate:"+formatDate(DateUtil.parseDate(formatDate(new Date()))));// System.out.println(DateHelper.isDate("1902-05-04 12:12:12"));//// System.out.println(DateHelper.getMonthFromDate(DateHelper.getDateFromString("2012-01", "yyyy-MM")));// System.out.println(DateHelper.conutDay("2009-01-01", "2009-05-03"));// System.out.println(DateHelper.dayCount("2010-7-3", "2010-8-23"));// getDateFromString("2012-4-12 12:25", "yyyy-mm-dd HH:mm");// System.out.println(getDateFromString("2012-4-12 12:25", "yyyy-mm-dd HH:mm"));// if(isDateBefore("2012-4-10 12:25","2013-4-10 12:25"))// {// System.out.println("!!!!!!!!!!!!!!!");// }else{// System.out.println("@@@@@@@@@@@@@@@@@@");// }// System.out.println(formatDateTimeForFileName(new Date()));// System.out.println(addHour(new Date(), 13)); System.out.println("!!!!"+String2Date("2009-1-1 11:00")); }}
阅读全文
0 0
- 工具类-日期工具类
- 日期工具类
- 日期工具类
- 日期工具类
- java日期工具类
- 日期工具类
- 日期工具类
- 一个日期工具类
- 日期工具类
- java日期工具类
- flex 日期工具类
- 工具类:日期处理
- java 日期工具类
- 日期工具类
- 日期工具类DataTool
- Java日期工具类
- 日期工具类TimeUnit
- DateTool日期工具类
- SQL Alias(别名)
- oracle exp导出缺少表的处理
- hoj2143 Songs 贪心
- 深入理解javascript选择器API系列第一篇——4种元素选择器
- CSDN-markdown编辑器
- 工具类-日期工具类
- 网站建设需要的流程与注意细节
- MyBatis的Mapper接口以及Example的实例函数及详解
- iOS RAC学习笔记一
- 在eclipse 集成maven 用于新建或者导入maven项目
- 生成模型、判别模型、朴素贝叶斯
- 前端安全(XSS、CSRF防御)
- Photon(一)
- ubuntu导入导出mysql数据库