java时间工具类

来源:互联网 发布:打war包没有java源码 编辑:程序博客网 时间:2024/05/01 19:52
package com.appbox.util.time;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;import java.util.regex.Pattern;import org.apache.log4j.Logger;public class DateTimeUtil {private static Logger log = Logger.getLogger(DateTimeUtil.class);/** *  * @return  当前日期和时间  格式:20110101121212000 */public static String getTimeStampStr() {return getDateTime("yyyyMMddHHmmssSSS");}/** *  * @return  当前日期和时间  格式:2011-01-01 12:12:12 */public static String getCurrentDateAndTime() {return getDateTime("yyyy-MM-dd HH:mm:ss");}/** *  * @return  获取当前日期  格式:2011-01-01 */public static String getCurrentDate() {return getDateTime("yyyy-MM-dd");}/** *  * @return  获取当前时间 格式  12:12:12  */public static String getCurrentTime() {String date = getDateTime("HH:mm:ss");return date;}/** *  * @return获取当前时间戳  */public static long getTimestamp() {Date dateNow = new Date();return dateNow.getTime();}/** * 将时间的string转换为Date类型 * @param str 例2011-01-01 12:12:12 * @return 时间类型对象 */public static Date StringToDate(String str){DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");         Date date = null;    try {        date = format1.parse(str);   } catch (ParseException e) {log.error("string 转换date:"+e.getMessage());    e.printStackTrace();    }    return date;  }public static String getDateTime(String pattern) {if (null == pattern || "".equals(pattern)) {pattern = "yyyy-MM-dd HH:mm:ss";}SimpleDateFormat sdf = new SimpleDateFormat(pattern);String dt = sdf.format(new Date());return dt;} /** * 将时间的Date转换为String类型 * @param date  * @param pattern 指定返回的日期字符串的格式 ,如果没有指定则默认为"yyyy-MM-dd HH:mm:ss" * @return String 返回为指定pattern格式的字符串 * @exception NullPointerException - 如果给定的模式为 null * @exception IllegalArgumentException - 如果给定的模式无效 */public static String dateToString(Date date,String ...pattern){String pattern2="yyyy-MM-dd HH:mm:ss";if(pattern.length>0){ pattern2=pattern[0]; }DateFormat format1 = new SimpleDateFormat(pattern2);         return format1.format(date);  }/** * 生成日期列表,包含开始日期和结束日期 * @param start开始日期 * @param end 结束日期 * @param pattern 指定返回的日期的格式 ,如果未指定则默认为"yyyy-MM-dd" * @return 包含开始日期和结束日期的日期列表,包含开始日期和结束日期,返回的日期格式为指定的pattern */@SuppressWarnings("deprecation")public static List<String> getDateList(Date start,Date end,String ...pattern){List<String> ret=new ArrayList<String>();String pattern2="yyyy-MM-dd";if(pattern.length>0){ pattern2=pattern[0]; }while(start.compareTo(end)<=0){ ret.add(dateToString(start,pattern2)); start.setDate(start.getDate()+1);}return ret;}/** * 将时间的string转换为Date类型,注意本类中的另一个方法与此方法首字母的不同 * @param datestr 例2011-01-01 12:12:12 * @param pattern 指定转换的格式,如果不存在,则默认为yyyy-MM-dd HH:mm:ss * @return 时间类型对象 */public static Date stringToDate(String datestr,String ...pattern){String pattern2="yyyy-MM-dd HH:mm:ss";if(pattern.length>0){pattern2=pattern[0];}DateFormat format1 = new SimpleDateFormat(pattern2);         Date date = null;    try {        date = format1.parse(datestr);   } catch (ParseException e) {log.error("string 转换date:"+e.getMessage());    e.printStackTrace();    }    return date;  }/** * 获取上个月的今天 * @return  当前日期和时间  格式:2011-01-01 12:12:12 */public static String getLastMonthDateAndTime() {String year = getDateTime("yyyy");String month = getDateTime("MM");if(Integer.parseInt(month) > 1){month = String.valueOf((Integer.parseInt(month)-1));if(month.length() == 1){month = "0" + month;}}else{month = "12";year = String.valueOf(Integer.parseInt(year)-1);}String time = getDateTime("-dd HH:mm:ss");time = year + "-" + month + time;return time;}/** * 根据当前时间生成流水号 * @param prefix 例"R" * @return  当前日期和时间  格式:2011-01-01 12:12:12 */public static String getSwiftnumber(String prefix) {String swiftnumber = prefix;String date = getCurrentDate();String[] temp = date.split("-");swiftnumber += (temp[0] + temp[1] + temp[2]);return swiftnumber;}public static boolean timeMatch(String startdate){String datereg="(([\\d]{2}(([02468][048])|[13579][26])\\-"// 闰年+ "((((0[13578])|(1[02]))\\-(([012][\\d])|(3[01])))"+ "|(((0[469])|(11))\\-(([012][\\d])|30))"+ "|(02\\-[012][\\d])))" // 月日+ "|([\\d]{2}(([02468][^0^4^8])|([13579][^2^6]))\\-"// 非闰年+ "((((0[13578])|(1[02]))\\-(([012][\\d])|(3[01])))"+ "|(((0[469])|(11))\\-(([012][\\d])|30))"+ "|(02\\-(([01][\\d])|(2[0-8]))))))";return Pattern.matches(datereg, startdate);}public static String getDateByYearlimited(Integer limitedyear) {String year = getDateTime("yyyy");year = String.valueOf((Integer.parseInt(year) + limitedyear));String date = getDateTime("-mm-dd");return year + date;}public static String getTomorrow() {String year = getDateTime("yyyy");String month = getDateTime("MM");String day = getDateTime("dd");if("01".equals(month) || "03".equals(month) || "05".equals(month) || "07".equals(month) || "08".equals(month) || "10".equals(month)){if(Integer.parseInt(day) >= 31){month = String.valueOf(Integer.parseInt(month) + 1) ;if(month.length() == 1){month = "0" + month;}day = "01";}else{day = String.valueOf(Integer.parseInt(day) + 1);if(day.length() == 1){day = "0" + day;}}}else if("04".equals(month) || "06".equals(month) || "09".equals(month) || "11".equals(month)){if(Integer.parseInt(day) >= 30){month = String.valueOf(Integer.parseInt(month) + 1) ;if(month.length() == 1){month = "0" + month;}day = "01";}else{day = String.valueOf(Integer.parseInt(day) + 1);if(day.length() == 1){day = "0" + day;}}}else if("02".equals(month)){int intyear = Integer.parseInt(year);if((intyear % 4 == 0) && (intyear % 100 != 0)||(intyear % 400==0)){if(Integer.parseInt(day) >= 29){month = String.valueOf(Integer.parseInt(month) + 1) ;if(month.length() == 1){month = "0" + month;}day = "01";}else{day = String.valueOf(Integer.parseInt(day) + 1);if(day.length() == 1){day = "0" + day;}}}else{if(Integer.parseInt(day) >= 28){month = String.valueOf(Integer.parseInt(month) + 1) ;if(month.length() == 1){month = "0" + month;}day = "01";}else{day = String.valueOf(Integer.parseInt(day) + 1);if(day.length() == 1){day = "0" + day;}}}}else if("12".equals(month)){if(Integer.parseInt(day) >= 31){year = String.valueOf(Integer.parseInt(year) + 1) ;month = "01";day = "01";}else{day = String.valueOf(Integer.parseInt(day) + 1);if(day.length() == 1){day = "0" + day;}}}String time = getDateTime(" HH:mm:ss");time = year + "-" + month + "-" + day + time;return time;}/** * 获得过去几天前或几天后的日期 * @param days 负为几天前, 正为几天后 * @return */public static String getNextDay(Long days) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String dt = sdf.format(new Date(new Date().getTime()+days*1000*3600*24));return dt;}public static String getLastDay() {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String dt = sdf.format(new Date(new Date().getTime()-1000*3600*24));return dt;}public static String getNextDay() {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String dt = sdf.format(new Date(new Date().getTime() + 1000*3600*24));return dt;}public static Boolean checktime(String time){if(getTimestamp() - StringToDate(time).getTime() <= 600000 && getTimestamp() - StringToDate(time).getTime() >= -600000){return true;}return false;}/** * 按日历算日期(明天或者昨天) *  * @param date * @param field * @param amount * @see Calendar#add(int, int) * @return */public static String dateWalker(String date, int field, int amount) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance();  try {cal.setTime(sdf.parse(date));cal.add(field, amount); String target = sdf.format(cal.getTime());return target;} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();} return null; // 无法解析输入时间}}

原创粉丝点击