Java日期的转换和运算
import java.sql.Date; import java.text.SimpleDateFormat; import java.util.Calendar; public class Util { /*** @function:可以增加日期的天数* @param date :日期* @param number :需要增加的天数* @return*/public static String addDay(String date, int number) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cd = Calendar.getInstance(); cd.setTime(sdf.parse(date)); cd.add(Calendar.DATE, number); return sdf.format(cd.getTime()); } /*** @function:将字符串转为Calendar类型,可以进行日期比较* @param dateTime 默认:当前系统时间* @param formatString 默认:yyyy-MM-dd* @return*/public static Calendar formatDateFromStringToCalendar(String dateTime, String formatString){Calendar cal = Calendar.getInstance();if (dateTime == null || "".equals(dateTime))cal.setTime(new Date());else{if(formatString==null || "".equals(formatString))formatString = "yyyy-MM-dd";SimpleDateFormat df = new SimpleDateFormat(formatString);try{cal.setTime(df.parse(dateTime));} catch (ParseException e){e.printStackTrace();}}if(formatString==null){cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);cal.set(Calendar.MILLISECOND, 0);}return cal;}/** * 日期相减运算 * 方法一 */public static long getQuot(String time1, String time2) throws ParseException{long quot = 0;SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd");Date date1 = ft.parse( time1 );Date date2 = ft.parse( time2 );quot = date1.getTime() - date2.getTime();quot = quot / 1000 / 60 / 60 / 24;return quot;}/** * 日期相减运算 * 方法二 */public long getDateNumber(String date1,String date2){int tempStart1 = Integer.parseInt(date1.substring(0,4));int tempStart2 = Integer.parseInt(date1.substring(4,6));int tempStart3 = Integer.parseInt(date1.substring(6,8));int tempEnd1 = Integer.parseInt(date2.substring(0,4));int tempEnd2 = Integer.parseInt(date2.substring(4,6));int tempEnd3 = Integer.parseInt(date2.substring(6,8));Calendar calendar1 = Calendar.getInstance();Calendar calendar2 = Calendar.getInstance();calendar1.set(tempStart1, tempStart2, tempStart3);//0到11表示1到12月calendar2.set(tempEnd1, tempEnd2, tempEnd3);long str=calendar2.getTimeInMillis()-calendar1.getTimeInMillis();return str/(24*60*60*1000); //返回相差天数}}import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * <p>Title: 周计算类,星期一为一周的开始,星期日为一周的结束</p> * <p>Description: 在两年的交接地带还有疑问。</p> * <p>比如2006-12-29到2009-01-04,属于2008年的最后一周,</p> * <p>2009-01-05位2009年第一周的开始。</p> * <p>db2种的week_iso也是这样计算的</p> * <p>Copyright: Copyright (c) 2006</p> * <p>DateTime: 2006-4-11 23:36:39</p> * * @author gumpgz * @version 1.0 */ public class WeekUtil { /** * 取得当前日期是多少周 * * @param date * @return */ public static int getWeekOfYear(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setMinimalDaysInFirstWeek(7); c.setTime (date); return c.get(Calendar.WEEK_OF_YEAR); } /** * 得到某一年周的总数 * * @param year * @return */ public static int getMaxWeekNumOfYear(int year) { Calendar c = new GregorianCalendar(); c.set(year, Calendar.DECEMBER, 31, 23, 59, 59); return getWeekOfYear(c.getTime()); } /** * 得到某年某周的第一天 * * @param year * @param week * @return */ public static Date getFirstDayOfWeek(int year, int week) { Calendar c = new GregorianCalendar(); c.set(Calendar.YEAR, year); c.set (Calendar.MONTH, Calendar.JANUARY); c.set(Calendar.DATE, 1); Calendar cal = (GregorianCalendar) c.clone(); cal.add(Calendar.DATE, week * 7); return getFirstDayOfWeek(cal.getTime ()); } /** * 得到某年某周的最后一天 * * @param year * @param week * @return */ public static Date getLastDayOfWeek(int year, int week) { Calendar c = new GregorianCalendar(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, Calendar.JANUARY); c.set(Calendar.DATE, 1); Calendar cal = (GregorianCalendar) c.clone(); cal.add(Calendar.DATE , week * 7); return getLastDayOfWeek(cal.getTime()); } /** * 取得当前日期所在周的第一天 * * @param date * @return */ public static Date getFirstDayOfWeek(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday return c.getTime (); } /** * 取得当前日期所在周的最后一天 * * @param date * @return */ public static Date getLastDayOfWeek(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday return c.getTime(); } public static void main(String[] args) { int year = 2006; int week = 1; // 以2006-01-02位例 Calendar c = new GregorianCalendar(); c.set(2006, Calendar.JANUARY, 2); Date d = c.getTime(); System.out.println("current date = " + d); System.out.println("getWeekOfYear = " + getWeekOfYear(d)); System.out.println("getMaxWeekNumOfYear = " + getMaxWeekNumOfYear(year)); System.out.println("getFirstDayOfWeek = " + getFirstDayOfWeek(year, week)); System.out.println("getLastDayOfWeek = " + getLastDayOfWeek(year, week)); System.out.println ("getFirstDayOfWeek = " + getFirstDayOfWeek(d)); System.out.println("getLastDayOfWeek = " + getLastDayOfWeek(d)); } }
页:
[1]