package xin.glue.ui.common; import java.text.DateFormatSymbols; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Locale; public class PosDateFormat { /** * @Title ÇöÀç ³¯Â¥¸¦ °¡Á®¿À´Â ÇÔ¼ö (¼­¹ö¸ðµâ¿¡¼­ ½ÇÇà) * @return ³â¿ùÀÏ 8ÀÚ¸® String */ static public String getCurrentDate() { java.util.Date date = new java.util.Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); return dateFormat.format(date); } /** * @Title ÇöÀç ½Ã°£À» °¡Á®¿À´Â ÇÔ¼ö (¼­¹ö¸ðµâ¿¡¼­ ½ÇÇà) * @return ½ÃºÐÃÊ 6ÀÚ¸® String */ static public String getCurrentTime() { java.util.Date date = new java.util.Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("HHmmss"); return dateFormat.format(date); } /** * @Title ÇöÀç SHIFT ¸¦ °¡Á®¿À´Â ÇÔ¼ö * @return 1 ÀÚ¸® String */ static public String getShift(String SrcDate) { String shift = null; int hhmi = Integer.parseInt(SrcDate.substring(8, 11)); if (hhmi > 800 && hhmi < 1600) { shift = "1"; } else if (hhmi > 1600 && hhmi < 2400) { shift = "2"; } else { shift = "3"; } return shift; } /** * @Title »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ³¯Â¥°¡ ¿Ã¹Ù¸¥Áö üũÇÏ´Â ÇÔ¼ö * @param src * »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ 8ÀÚ¸® ³â¿ùÀÏ * @return ³¯Â¥°¡ ¿Ã¹Ù¸¥°æ¿ì true, ¿Ã¹Ù¸£Áö¾ÊÀº °æ¿ì false¸¦ return */ static public boolean dateValid(String src) { int year = 0; int month = 0; int day = 0; if (src.length() != 8) return false; try { year = Integer.parseInt(src.substring(0, 4)); month = Integer.parseInt(src.substring(4, 6)); day = Integer.parseInt(src.substring(6)); } catch (Exception e) { return false; } // À±³â Flag boolean flag = false; // ÀԷ¹ÞÀº ³âµµ À±³âÀÎÁö üũ if (year % 4 == 0) { flag = true; if (year % 100 == 0) { flag = false; if (year % 400 == 0) { flag = true; } } } int dayArray[] = new int[12]; { dayArray[0] = 31; dayArray[1] = (flag) ? 29 : 28; dayArray[2] = 31; dayArray[3] = 30; dayArray[4] = 31; dayArray[5] = 30; dayArray[6] = 31; dayArray[7] = 31; dayArray[8] = 30; dayArray[9] = 31; dayArray[10] = 30; dayArray[11] = 31; } if (month < 1 || month > 12) return false; if (day < 1 || day > dayArray[month - 1]) return false; return true; } static public String getCalendarDate(Calendar calendar) { if (calendar == null) { return ""; } else { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); java.util.Date date = calendar.getTime(); return dateFormat.format(date); } } static public Calendar getDateCalendar(String date) { Calendar calendar = Calendar.getInstance(Locale.KOREA); calendar.set(Integer.parseInt(date.substring(0, 4)), Integer .parseInt(date.substring(4, 6)) - 1, Integer.parseInt(date .substring(6))); return calendar; } static public int getDayOfWeek(java.util.Date date) { String weekdays[] = (new DateFormatSymbols()).getShortWeekdays(); String weekday = (new SimpleDateFormat("E")).format(date); for (int i = 1; i <= weekdays.length; ++i) { if (weekday.equals(weekdays[i])) return i; } return -1; } public static int BetweenDateCnt(String sFDate, String sTDate) { int iLoopCnt = 1; int iFYear = Integer.parseInt(sFDate.substring(0, 4)); int iFMonth = Integer.parseInt(sFDate.substring(4, 6)); int iFDay = Integer.parseInt(sFDate.substring(6, 8)); int iTYear = Integer.parseInt(sTDate.substring(0, 4)); int iTMonth = Integer.parseInt(sTDate.substring(4, 6)); int iTDay = Integer.parseInt(sTDate.substring(6, 8)); double dFDate = Double.parseDouble(sFDate.substring(0, 8)); double dTDate = Double.parseDouble(sTDate.substring(0, 8)); String sYear = null; String sMonth = null; String sDay = null; String sTmpDate = null; if (dFDate == dTDate) return 1; if (dFDate < dTDate) { iLoopCnt = 0; while (dFDate <= dTDate) { iFDay++; sYear = Integer.toString(iFYear); sMonth = Integer.toString(iFMonth); sDay = Integer.toString(iFDay); if (sMonth.length() == 1) sMonth = "0" + Integer.toString(iFMonth); if (sDay.length() == 1) sDay = "0" + Integer.toString(iFDay); sTmpDate = sYear + sMonth + sDay; if (dateValid(sTmpDate) == false) { iFDay = 1; iFMonth++; if (iFMonth > 12) { iFMonth = 1; iFYear++; } } sYear = Integer.toString(iFYear); sMonth = Integer.toString(iFMonth); sDay = Integer.toString(iFDay); if (sMonth.length() == 1) sMonth = "0" + Integer.toString(iFMonth); if (sDay.length() == 1) sDay = "0" + Integer.toString(iFDay); sTmpDate = sYear + sMonth + sDay; dFDate = Double.parseDouble(sTmpDate); iLoopCnt++; } } else { iLoopCnt = 0; while (dTDate <= dFDate) { iTDay++; sYear = Integer.toString(iTYear); sMonth = Integer.toString(iTMonth); sDay = Integer.toString(iTDay); if (sMonth.length() == 1) sMonth = "0" + Integer.toString(iTMonth); if (sDay.length() == 1) sDay = "0" + Integer.toString(iTDay); sTmpDate = sYear + sMonth + sDay; if (dateValid(sTmpDate) == false) { iTDay = 1; iTMonth++; if (iTMonth > 12) { iTMonth = 1; iTYear++; } } sYear = Integer.toString(iTYear); sMonth = Integer.toString(iTMonth); sDay = Integer.toString(iTDay); if (sMonth.length() == 1) sMonth = "0" + Integer.toString(iTMonth); if (sDay.length() == 1) sDay = "0" + Integer.toString(iTDay); sTmpDate = sYear + sMonth + sDay; dTDate = Double.parseDouble(sTmpDate); iLoopCnt++; } iLoopCnt = iLoopCnt * -1; } return iLoopCnt; } public static int BetweenMonthCnt(String sFDate, String sTDate) { int iDteCnt = 1; int iFYear = Integer.parseInt(sFDate.substring(0, 4)); int iFMonth = Integer.parseInt(sFDate.substring(4, 6)); int iTYear = Integer.parseInt(sTDate.substring(0, 4)); int iTMonth = Integer.parseInt(sTDate.substring(4, 6)); double dFDate = Double.parseDouble(sFDate.substring(0, 6)); double dTDate = Double.parseDouble(sTDate.substring(0, 6)); String sYear = null; String sMonth = null; String sTmpMonth = null; if (dFDate == dTDate) return 1; if (dFDate < dTDate) { iDteCnt = 0; while (dFDate <= dTDate) { iFMonth++; if (iFMonth > 12) { iFMonth = 1; iFYear++; } sYear = Integer.toString(iFYear); sMonth = Integer.toString(iFMonth); if (sMonth.length() == 1) sMonth = "0" + Integer.toString(iFMonth); sTmpMonth = sYear + sMonth; dFDate = Double.parseDouble(sTmpMonth); iDteCnt++; } } else { iDteCnt = 0; while (dTDate <= dFDate) { iTMonth++; if (iTMonth > 12) { iTMonth = 1; iTYear++; } sYear = Integer.toString(iTYear); sMonth = Integer.toString(iTMonth); if (sMonth.length() == 1) sMonth = "0" + Integer.toString(iTMonth); sTmpMonth = sYear + sMonth; dTDate = Double.parseDouble(sTmpMonth); iDteCnt++; } iDteCnt = iDteCnt * -1; } return iDteCnt; } public static int BetweenYearCnt(String sFDate, String sTDate) { int iDteCnt = 1; int iFYear = Integer.parseInt(sFDate.substring(0, 4)); int iTYear = Integer.parseInt(sTDate.substring(0, 4)); double dFDate = Double.parseDouble(sFDate.substring(0, 4)); double dTDate = Double.parseDouble(sTDate.substring(0, 4)); String sYear = null; // String sMonth = null; // String sTmpMonth = null; if (dFDate == dTDate) return 1; if (dFDate < dTDate) { iDteCnt = 0; while (dFDate <= dTDate) { iFYear++; sYear = Integer.toString(iFYear); dFDate = Double.parseDouble(sYear); iDteCnt++; } } else { iDteCnt = 0; while (dTDate <= dFDate) { iTYear++; sYear = Integer.toString(iTYear); dTDate = Double.parseDouble(sYear); iDteCnt++; } iDteCnt = iDteCnt * -1; } return iDteCnt; } public static String AddDateFunc(String sDate, int iDteCnt) { int iLoopCnt = 1; int iYear = Integer.parseInt(sDate.substring(0, 4)); int iMonth = Integer.parseInt(sDate.substring(4, 6)); int iDay = Integer.parseInt(sDate.substring(6, 8)); String sYear = null; String sMonth = null; String sDay = null; String sTmpDate = null; if (iDteCnt == 0) return sDate; if (iDteCnt > 0) { iLoopCnt = 1; while (iLoopCnt <= iDteCnt) { iDay++; sYear = Integer.toString(iYear); sMonth = Integer.toString(iMonth); sDay = Integer.toString(iDay); if (sMonth.length() == 1) sMonth = "0" + Integer.toString(iMonth); if (sDay.length() == 1) sDay = "0" + Integer.toString(iDay); sTmpDate = sYear + sMonth + sDay; if (dateValid(sTmpDate) == false) { iDay = 1; iMonth++; if (iMonth > 12) { iMonth = 1; iYear++; } } sYear = Integer.toString(iYear); sMonth = Integer.toString(iMonth); sDay = Integer.toString(iDay); if (sMonth.length() == 1) sMonth = "0" + Integer.toString(iMonth); if (sDay.length() == 1) sDay = "0" + Integer.toString(iDay); sTmpDate = sYear + sMonth + sDay; iLoopCnt++; } } else { iLoopCnt = 1; iDteCnt = iDteCnt * -1; while (iLoopCnt <= iDteCnt) { iDay--; sYear = Integer.toString(iYear); sMonth = Integer.toString(iMonth); sDay = Integer.toString(iDay); if (sMonth.length() == 1) sMonth = "0" + Integer.toString(iMonth); if (sDay.length() == 1) sDay = "0" + Integer.toString(iDay); if (iDay == 0) { iMonth--; if (iMonth == 0) { iMonth = 12; iYear--; } for (int il = 27; il <= 32; il++) { sYear = Integer.toString(iYear); sMonth = Integer.toString(iMonth); sDay = Integer.toString(il); if (sMonth.length() == 1) sMonth = "0" + Integer.toString(iMonth); if (sDay.length() == 1) sDay = "0" + Integer.toString(il); sTmpDate = sYear + sMonth + sDay; if (dateValid(sTmpDate) == false) { iDay = il - 1; sDay = Integer.toString(iDay); if (sDay.length() == 1) sDay = "0" + Integer.toString(il); break; } } } sTmpDate = sYear + sMonth + sDay; iLoopCnt++; } } return sTmpDate; } public static String AddMonthFunc(String sMonth, int iDteCnt) { int iLoopCnt = 1; int iYear = Integer.parseInt(sMonth.substring(0, 4)); int iMonth = Integer.parseInt(sMonth.substring(4, 6)); String sYear = null; String sTmpMonth = null; if (iDteCnt == 0) return sMonth.substring(0, 6); if (iDteCnt > 0) { iLoopCnt = 1; while (iLoopCnt <= iDteCnt) { iMonth++; if (iMonth > 12) { iMonth = 1; iYear++; } sYear = Integer.toString(iYear); sMonth = Integer.toString(iMonth); if (sMonth.length() == 1) sMonth = "0" + Integer.toString(iMonth); sTmpMonth = sYear + sMonth; iLoopCnt++; } } else { iLoopCnt = 1; iDteCnt = iDteCnt * -1; while (iLoopCnt <= iDteCnt) { iMonth--; if (iMonth == 0) { iMonth = 12; iYear--; } sYear = Integer.toString(iYear); sMonth = Integer.toString(iMonth); if (sMonth.length() == 1) sMonth = "0" + Integer.toString(iMonth); sTmpMonth = sYear + sMonth; iLoopCnt++; } } return sTmpMonth; } public static String AddYearFunc(String sYear, int iDteCnt) { int iLoopCnt = 1; int iYear = Integer.parseInt(sYear.substring(0, 4)); if (iDteCnt == 0) return sYear.substring(0, 4); if (iDteCnt > 0) { iLoopCnt = 1; while (iLoopCnt <= iDteCnt) { iYear++; sYear = Integer.toString(iYear); iLoopCnt++; } } else { iLoopCnt = 1; iDteCnt = iDteCnt * -1; while (iLoopCnt <= iDteCnt) { iYear--; sYear = Integer.toString(iYear); iLoopCnt++; } } return sYear; } public static String Addyyyymmdd(String sYYYYMMDD, int iDteCnt) { String sTmpDate = sYYYYMMDD; if (iDteCnt != 0) { int iYear = Integer.parseInt(sYYYYMMDD.substring(0, 4)); String sMonth = sYYYYMMDD.substring(4, 6); String sDay = sYYYYMMDD.substring(6, 8); sYYYYMMDD = Integer.toString(iYear + iDteCnt); sTmpDate = sYYYYMMDD + sMonth + sDay; } return sTmpDate; } public static String FromDateToDate(int day) { Calendar cal = getDateCalendar(PosDateFormat.getCurrentDate()); cal.add(Calendar.DATE, day); return PosDateFormat.getCalendarDate(cal); } /** * @Title ¸ù¾Ýʱ¼ä»ñÈ¡°à´ÎÐÅÏ¢£¬TL * @return 1 String */ static public String getShiftT(String SrcDate) { String shift = null; int hhmi = Integer.parseInt(SrcDate.substring(8, 12)); if (hhmi > 800 && hhmi < 1600) { shift = "1"; } else if (hhmi > 1600 && hhmi < 2400) { shift = "2"; } else { shift = "3"; } return shift; } }