/** * 해당월 주의 최대값 * @param dateStr YYYYMM */ function getWeekCountOfMonth(dateStr) { var year = Number(dateStr.substring(0, 4)); var month = Number(dateStr.substring(4, 6)); var nowDate = new Date(year, month-1, 1); var lastDate = new Date(year, month, 0).getDate(); var monthSWeek = nowDate.getDay(); var weekSeq = parseInt((parseInt(lastDate) + monthSWeek - 1)/7) + 1; return weekSeq; }
날짜
- 날짜(Date) 해당 월의 최대 주수(주차) 구하기 2012.07.12
- 날짜(Date, Calendar), 한주의 시작~끝 날짜, 요일, 마지막일 2012.07.11
- 날짜 계산, 기준일로부터 더하기(+), 빼기(-), 윤달 적용 2010.10.07
날짜(Date) 해당 월의 최대 주수(주차) 구하기
2012. 7. 12. 11:19
날짜(Date, Calendar), 한주의 시작~끝 날짜, 요일, 마지막일
2012. 7. 11. 15:08
import java.text.SimpleDateFormat; import java.util.Date; import java.util.GregorianCalendar; import com.ibm.icu.util.Calendar; public class DateUtil { /** * 월의 해당 주의 날짜 배열을 얻어온다. * @param yyyymm * @param weekSeq * @return */ public static int[] getRangeDateOfWeek(String yyyymm, int weekSeq) { int rangeDateOfWeek [] = new int[7]; int startDayOfWeek = dayOfWeek(yyyymm.substring(0, 4), yyyymm.substring(4, 6), "1"); if( startDayOfWeek == 0 || weekSeq > 1 ){ Calendar cal = converterDate(yyyymm+"01"); int lastDateOfMonth = getLastDateOfMonth(new SimpleDateFormat("yyyyMM").format(cal.getTime())); int startDate = 1 + ((weekSeq-1)*7) - startDayOfWeek; for( int i=0; i<7; i++ ){ if( startDate > lastDateOfMonth ){ startDate = 1; } rangeDateOfWeek[i] = startDate++; } }else{ Calendar cal = converterDate(yyyymm+"01"); cal.add(Calendar.MONTH, -1); int lastDateOfBeforeMonth = getLastDateOfMonth(new SimpleDateFormat("yyyyMM").format(cal.getTime())); int startDate = (lastDateOfBeforeMonth + 1) - startDayOfWeek; for( int i=0; i<7; i++ ){ if( startDate > lastDateOfBeforeMonth ){ startDate = 1; } rangeDateOfWeek[i] = startDate++; } } return rangeDateOfWeek; } /** * 특정날짜의 요일의 숫자를 리턴 * 0:일요일 ~ 6:토요일 * @return */ public static int dayOfWeek(String sYear, String sMonth, String sDay) { int iYear = Integer.parseInt(sYear); int iMonth = Integer.parseInt(sMonth) - 1; int isDay = Integer.parseInt(sDay); GregorianCalendar gc = new GregorianCalendar(iYear, iMonth, isDay); return gc.get(gc.DAY_OF_WEEK) - 1; } /** * String 형식의 날자를 Calendar 로 변환 해준다. * * @param yyyymmdd * @return */ public static Calendar converterDate(String yyyymmdd) { Calendar cal = Calendar.getInstance(); // 양력 달력 if (yyyymmdd == null) return cal; String date = yyyymmdd.trim(); if (date.length() != 8) { if (date.length() == 4) date = date + "0101"; else if (date.length() == 6) date = date + "01"; else if (date.length() > 8) date = date.substring(0, 8); else return cal; } cal.set(Calendar.YEAR, Integer.parseInt(date.substring(0, 4))); cal.set(Calendar.MONTH, Integer.parseInt(date.substring(4, 6)) - 1); cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(date.substring(6))); return cal; } /** * 해당 월의 마지막일을 구한다. * @return */ public static int getLastDateOfMonth() { return getLastDateOfMonth(new Date()); } public static int getLastDateOfMonth(Date date) { return getLastDateOfMonth(new SimpleDateFormat("yyyyMM").format(date)); } public static int getLastDateOfMonth(String yyyymm) { int year = Integer.parseInt(yyyymm.substring(0, 4)); int month = Integer.parseInt(yyyymm.substring(4, 6)) - 1; Calendar destDate = Calendar.getInstance(); destDate.set(year, month, 1); return destDate.getActualMaximum(Calendar.DATE); } }
날짜 계산, 기준일로부터 더하기(+), 빼기(-), 윤달 적용
2010. 10. 7. 16:58
[JavaScript]
/** * 주어진 값 다음의 날짜 구하기(과거는 - 마이너스) * @param nextDateInt 날짜에 더하거나 빼야할 값 * @param nowDate 현재 날짜 및 기준날짜( new Date(), 없을 경우 new Date(), yyyymmdd 8자리) * @return Date */ function getNextDate(nextDateInt, standardDate){ var oneDate = 1000 * 3600 * 24; // 하루 var nowDate; if( standardDate == undefined ) nowDate = new Date(); else if( standardDate.getTime != undefined ) nowDate = standardDate; else if( standardDate.length == 8 ) nowDate = new Date(standardDate.substring(0, 4), parseInt(standardDate.substring(4, 6))-1, standardDate.substring(6, 8)); return new Date(nowDate.getTime() + (oneDate * nextDateInt)); }
[JAVA]
/** * 주어진 값 다음의 날짜 구하기(과거는 - 마이너스) * @param nextDateInt 날짜에 더하거나 빼야할 값 * @param nowDate 현재 날짜 및 기준날짜( new Date(), 없을 경우 new Date(), yyyymmdd 8자리) * @return Date */ public static Date getNextDate(int nextDateInt){ return getNextDate(nextDateInt, new Date()); } public static Date getNextDate(int nextDateInt, String nowDateStr){ GregorianCalendar gc = new GregorianCalendar ( Integer.parseInt(nowDateStr.substring(0, 4)), (Integer.parseInt(nowDateStr.substring(4, 6))-1), Integer.parseInt(nowDateStr.substring(6, 8)) ); return getNextDate(nextDateInt, gc.getTime()); } public static Date getNextDate(int nextDateInt, Date nowDate){ long oneDate = 1000 * 3600 * 24; // 하루 return new Date(nowDate.getTime() + (oneDate * nextDateInt)); }[ActionScript]
/** * 주어진 값 다음의 날짜 구하기(과거는 - 마이너스) * @param nextDateInt 날짜에 더하거나 빼야할 값 * @param nowDate 현재 날짜 및 기준날짜 * @return Date */ public static function getNextDate(nextDateInt:int, standardDate:Date) : Date { var oneDate:Number = 1000 * 3600 * 24; // 하루 return new Date(standardDate.getTime() + (oneDate * nextDateInt)); }