/** * Copyright (c) 2008 CEPRI,Inc.All rights reserved. * Created by 2013-04-13 */ package com.cepri.cmm.utils; import java.sql.SQLException; import java.sql.Time; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import org.apache.log4j.Logger; /** * @title :日期转换工具 * @description :包含常用日期格式转换操作 * @author: * @data: */ public class DateUtil { /** Log4j日志 */ private static Logger logger = Logger.getLogger(DateUtil.class); private static Calendar mycd = Calendar.getInstance(); private static int year = 0; private static int month = 0; private static int date = 0; private static int hour = 0; private static int minute = 0; private static int second = 0; /** 设置系统当前日期 * */ public DateUtil() { setdate(); } /** 设置系统时间 * */ private static void setdate() { year = mycd.get(Calendar.YEAR); month = mycd.get(Calendar.MONTH) + 1; date = mycd.get(Calendar.DATE); hour = mycd.get(Calendar.HOUR); minute = mycd.get(Calendar.MINUTE); second = mycd.get(Calendar.SECOND); } /** 得到系统当前日期及时间 格式为 yyyy-MM-dd HH:mm:ss * */ public static String getDateTime() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(new Date()); } /** 得到long型的日期值 * */ public static Time getSqlTime() { return new Time(getTime()); } /** 获取系统当前时间 * */ public static long getTime() { java.util.Date dt = new java.util.Date(); return dt.getTime(); } /** 获取系统当前时间 * */ public static Date getJavaDate() { return new java.util.Date(); } /** 获取系统当前日期 得到的日期格式如:2004-10-09 * */ public static java.sql.Date getSqlDate() { return new java.sql.Date(getTime()); } /** 取得Timestamp类型时间 * */ public static Timestamp getTimestamp() { return new Timestamp(getTime()); } /** 得到Calendar对象 * */ public static Calendar getCD() { Calendar mycd = Calendar.getInstance(); return mycd; } /** 得到时间 * */ public static String getAll(String sStr) { Calendar mycd = Calendar.getInstance(); return mycd.get(Calendar.YEAR) + sStr + (mycd.get(Calendar.MONTH) + 1) + sStr + mycd.get(Calendar.DATE); } /** 得到日期,以-为分割符 * */ public static String getAll() { return getAll("-"); } /** 得到系统当前年 * */ public static int getYear() { Calendar mycd = Calendar.getInstance(); return mycd.get(Calendar.YEAR); } /** 得到系统当前月 * */ public static int getMonth() { Calendar mycd = Calendar.getInstance(); return mycd.get(Calendar.MONTH) + 1; } /** 得到系统当前日 * */ public static int getDate() { Calendar mycd = Calendar.getInstance(); return mycd.get(Calendar.DATE); } /** 得到系统年 * */ public static int getAddYear() { return mycd.get(Calendar.YEAR); } /** 得到系统月 * */ public static int getAddMonth() { return mycd.get(Calendar.MONTH) + 1; } /** 得到系统日 * */ public static int getAddDate() { return mycd.get(Calendar.DATE); } /** 得到日期格式为yyyy-mm-dd * */ public static String getMiddle() { return getMiddle("-"); } /** 得到日期格式为YYYY $sStr MM 其中sStr为分割字符 * */ public static String getMiddleYM(String sStr) { year = mycd.get(Calendar.YEAR); month = mycd.get(Calendar.MONTH) + 1; String re = "" + String.valueOf(year); if (month < 10) re += sStr + "0" + String.valueOf(month); else re += sStr + String.valueOf(month); return re; } /** 得到日期格式为YYYY $sStr MM $sStr DD其中sStr为分割字符 * */ public static String getMiddle(String sStr) { year = mycd.get(Calendar.YEAR); month = mycd.get(Calendar.MONTH) + 1; date = mycd.get(Calendar.DATE); String re = "" + String.valueOf(year); if (month < 10) re += sStr + "0" + String.valueOf(month); else re += sStr + String.valueOf(month); if (date < 10) re += sStr + "0" + String.valueOf(date); else re += sStr + String.valueOf(date); return re; } /** 得到日期格式为 YYYY $sStr MM $sStr DD $sStr hh:mm:ss其中sStr为分割字符 * */ public static String getTimeStr(String sStr) { Calendar mycd = Calendar.getInstance(); String re = "" + mycd.get(Calendar.YEAR); if (mycd.get(Calendar.MONTH) + 1 < 10) re += sStr + "0" + String.valueOf(mycd.get(Calendar.MONTH) + 1); else re += sStr + String.valueOf(mycd.get(Calendar.MONTH) + 1); if (mycd.get(Calendar.DATE) < 10) re += sStr + "0" + String.valueOf(mycd.get(Calendar.DATE)); else re += sStr + String.valueOf(mycd.get(Calendar.DATE)); if (mycd.get(Calendar.HOUR) < 10) re += " " + "0" + String.valueOf(mycd.get(Calendar.HOUR)); else re += " " + String.valueOf(mycd.get(Calendar.HOUR)); if (mycd.get(Calendar.MINUTE) < 10) re += ":0" + String.valueOf(mycd.get(Calendar.MINUTE)); else re += ":" + String.valueOf(mycd.get(Calendar.MINUTE)); if (mycd.get(Calendar.SECOND) < 10) re += ":0" + String.valueOf(mycd.get(Calendar.SECOND)); else re += ":" + String.valueOf(mycd.get(Calendar.SECOND)); return re; } /** 通过给定的年、月、日 设置Calendar对象 * */ public DateUtil(String Year, String Month, String Day) { try { mycd.set(Integer.parseInt(Year), Integer.parseInt(Month) - 1, Integer.parseInt(Day)); } catch (Exception e) { System.out.println(e.getMessage()); } } public DateUtil(Date nd) { mycd.setTime(nd); this.setdate(); } /** 通过给定的年、月、日 设置Calendar对象 * */ public DateUtil(int inty, int intm, int intd) { mycd.set(inty, intm - 1, intd); this.setdate(); } /** 日期加nday天后,从新设置系统当前时间 * */ public void addDay(int nday) { mycd.set(year, month - 1, date + nday); setdate(); } /** 日期加nday天后,从新设置系统当前时间 * */ public void addDay(String nday) { addDay(Integer.parseInt(nday)); } /** 日期加nmonth月后,从新设置系统当前时间 * */ public void addMonth(int nmonth) { mycd.set(year, month + nmonth - 1, date); this.setdate(); } /** 日期加nmonth月后,从新设置系统当前时间 * */ public void addMonth(String nmonth) { addMonth(Integer.parseInt(nmonth)); } /** 日期加nyear年后,从新设置系统当前时间 * */ public void addYear(int nyear) { mycd.set(year + nyear, month - 1, date); this.setdate(); } /** 日期加nyear年后,从新设置系统当前时间 * */ public void addYear(String nyear) { addYear(Integer.parseInt(nyear)); } /** 取得两个日期的相隔天数 * */ public static int dayDiff(DateUtil a, DateUtil b) { int n = 0; long temptime = b.getTime() - a.getTime(); temptime /= 24 * 3600 * 1000; return Integer.parseInt(String.valueOf(temptime)); } /** 取得两个日期的相隔的月数 * */ public static int yearDiff(DateUtil a, DateUtil b) { return (b.getYear() - a.getYear()); } /** 取得两个日期的相隔的月数 * */ public static int monthDiff(DateUtil a, DateUtil b) { int n = 0; n = yearDiff(a, b); n = n * 12 + (b.getMonth() - a.getMonth()); return n; } /** 取得两个日期的相隔天数 * */ public static int getDays(Date sd, Date ed) { return (int)((ed.getTime() - sd.getTime()) / (3600 * 24 * 1000)); } /*************************************************************************** * 取得yyyymm,参数一:yyyymm,参数二:number 得到减去月份的日期 **************************************************************************/ public static String getYearMonth(String str, int num) { Calendar mycdar = Calendar.getInstance(); int yearSub = Integer.parseInt(str.substring(0, 4)); int monthSub = Integer.parseInt(str.substring(4, 6)) - 1; mycdar.set(yearSub, monthSub - num, 1); // 月处理 String monthStr = ""; monthSub = mycdar.get(mycdar.MONTH) + 1; if (monthSub < 10) monthStr = "0" + String.valueOf(monthSub); else monthStr = String.valueOf(monthSub); return String.valueOf(mycdar.get(mycdar.YEAR)) + monthStr; } public static String getTime(String s) { if (s == null || s.equals("")) return ""; String s1 = ""; try { SimpleDateFormat simpledateformat = new SimpleDateFormat(s); s1 = simpledateformat.format(Calendar.getInstance().getTime()); } catch (Exception exception) { System.out.println(Calendar.getInstance().toString() + "cannot format time [function:getTime(String)]"); exception.printStackTrace(); } return s1; } /** 将String 转换操作,将sDt替换为Timestamp型的日期型 **/ public static java.sql.Timestamp getDateTime ( String sDt ) { try { return java.sql.Timestamp.valueOf (sDt) ; //sDt // format:yyyy-mm-dd // hh:mm:ss.fffffffff } catch (IllegalArgumentException iae) { sDt = sDt + " 00:00:00" ; try { return java.sql.Timestamp.valueOf ( sDt ) ; } catch (Exception e) { return null ; } } } /** * String转成java.util.Date对象 * * @author zhangg * @param strDate * 时间字符串 * @param pattern * 规则 例如:"yyyy-MM-dd hh:mm:ss" * @return java.util.Date Date对象 * @see java.text.SimpleDateFormat#parse(String) * @throws ParseException */ public static java.util.Date string2Date(String strDate, String pattern) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.parse(strDate); } /** * java.util.Date转成String对象 * * @author zhangg * @param date * java.util.Date对象 * @param pattern * 规则 例如:"yyyy-MM-dd hh:mm:ss" * @see java.text.SimpleDateFormat#format(Date) * @return String 转换后的时间 */ public static String date2String(java.util.Date date, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(date); } /** * String转成java.sql.Date对象 * * @author zhangg * @param strDate * 时间字符串 * @param pattern * 规则 例如:"yyyy-MM-dd hh:mm:ss" * @return java.sql.Date Date对象 * @see java.text.SimpleDateFormat#parse(String) * @throws ParseException */ public static java.sql.Date string2SqlDate(String strDate, String pattern) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(pattern); java.util.Date date = sdf.parse(strDate); return new java.sql.Date(date.getTime()); } /** * java.sql.Date对象转成String * * @author zhangg * @param date * java.sql.Date对象 * @param pattern * 规则 例如:"yyyy-MM-dd hh:mm:ss" * @see java.text.SimpleDateFormat#format(Date) * @return String 转换后的时间 */ public static String sqlDate2String(java.sql.Date date, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(date); } /** * 获取返回类型为Timestamp的当前时间 * * @author 李银辉 * @return Timestamp 当前时间 */ public static Timestamp getCurrentTime() { Timestamp t = new Timestamp(System.currentTimeMillis()); return t; } private static String [] CHN_NUM = {"零","一","二","三","四","五","六","七","八","九","十","十一","十二"}; /** * 显示中文年月 * @return String * @author sw * 2009-10-26 */ public static String getCHNYearMonth() { StringBuilder str = new StringBuilder(20); String year = Calendar.getInstance().get(Calendar.YEAR) + ""; int month = Calendar.getInstance().get(Calendar.MONTH) + 1; for(int i: year.getBytes()) str.append(CHN_NUM[i-48]); str.append("年"); str.append(CHN_NUM[month]).append("月"); return str.toString(); } /** * @函数名称:toDay * @功能描述: 获得格式化后的日期 * @return: 格式化后的日期 * @exception: * @throws SQLException */ public static String toDay() { GregorianCalendar thisday = new GregorianCalendar(); Date d = thisday.getTime(); DateFormat df = DateFormat.getDateInstance(); String s = df.format(d); return s; } /** 获取当前时间之前后者之后的日期 (传-1 获取前天的时间) * @param day * @return */ public static java.util.Date getOtherDate(int offset){ Calendar c = Calendar.getInstance(); c.add(c.DATE, offset); java.util.Date date = c.getTime(); return date; } public static java.util.Date add(java.util.Date date,int amount){ java.util.Calendar c=java.util.Calendar.getInstance(); c.setTime(date); c.add(Calendar.DAY_OF_MONTH,amount); return c.getTime(); } /** * 把字符串日期转换为日期对象 * @param date * @return */ public static Date fomateDate(String date){ Date d = null; if(date != null && date.trim().length() > 0){ try { d = DateFormat.getDateInstance().parse(date); } catch (ParseException e) { logger.error("将字符串转换为日期出错",e); } } return d ; } public static void main(String[] args) { System.out.println(DateUtil.add(DateUtil.fomateDate("2009-09-09"), 1)); } }
java Date 处理
猜你喜欢
转载自838179211.iteye.com/blog/1846838
今日推荐
周排行