dateHelper.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741
  1. String.prototype.toDate = toDate;
  2. Date.prototype.getDateFormat = getDateFormat;
  3. Date.prototype.getAddDate = getAddDate;
  4. Date.prototype.getDayOfWeek = getDayOfWeek;
  5. Date.prototype.getMonthDay = getMonthDay;
  6. Date.prototype.isLeapYear = isLeapYear;
  7. /**
  8. * @---------------------------------------------------
  9. * @desc : 값이 없는지 체크
  10. * @param : 체크할 문자열
  11. * @return : true or false
  12. * @---------------------------------------------------
  13. */
  14. function isNull(str){
  15. return ((str == null || str == "" || str == "undefined") ? true:false);
  16. }
  17. /**
  18. * @desc : 문자열 날짜를 Date로 반환
  19. * <pre>
  20. * var date = "2002-03-05".toDate("YYYY-MM-DD")
  21. * </pre>
  22. * @param : pPattern - Date를 표현하고 있는 현재의 String을 pattern으로 표현한다.
  23. * <pre>
  24. * # syntex
  25. *
  26. * YYYY : year(4자리)
  27. * YY : year(2자리)
  28. * MM : month in year(number)
  29. * DD : day in month
  30. * hh : hour in day (0~23)
  31. * mm : minute in hour
  32. * ss : second in minute
  33. * SS : millisecond in second
  34. *
  35. * <font color=red>주의)</font> 이 중에서 YYYY(YY), MM, DD 는 반드시 있어야 한다.
  36. * </pre>
  37. * @return : 변환된 Date Object.
  38. * @---------------------------------------------------
  39. */
  40. function toDate(pPattern)
  41. {
  42. var index = -1;
  43. var year;
  44. var month;
  45. var day;
  46. var hour = 0;
  47. var min = 0;
  48. var sec = 0;
  49. var ms = 0;
  50. if(isNull(pPattern)) pPattern = "YYYYMMDD";
  51. if ((index = pPattern.indexOf("YYYY")) == -1 ) {
  52. index = pPattern.indexOf("YY");
  53. year = "20" + this.substr(index, 2);
  54. } else {
  55. year = this.substr(index, 4);
  56. }
  57. index = pPattern.indexOf("MM");
  58. month = this.substr(index, 2);
  59. index = pPattern.indexOf("DD");
  60. day = this.substr(index, 2);
  61. if ((index = pPattern.indexOf("hh")) != -1 ) {
  62. hour = this.substr(index, 2);
  63. }
  64. if ((index = pPattern.indexOf("mm")) != -1 ) {
  65. min = this.substr(index, 2);
  66. }
  67. if ((index = pPattern.indexOf("ss")) != -1 ) {
  68. sec = this.substr(index, 2);
  69. }
  70. if ((index = pPattern.indexOf("SS")) != -1 ) {
  71. ms = this.substr(index, 2);
  72. }
  73. return new Date(year, month - 1, day, hour, min, sec, ms);
  74. }
  75. /**
  76. * @desc : Date type을 문자 포맷으로 바꾼다.
  77. * <pre>
  78. * default pattern은 "YYYYMMDD"이다.
  79. *
  80. * 함수 호출시 다음과 같이 사용한다.
  81. * @use : var today = new Date().format("yyyy-MM-dd");
  82. * 1) getDateFormat() --> default로 YYYYMMDD형태로 반환한다.
  83. * 2) getDateFormat("YYYY/MM/DD") --> pattern 형식으로 반환한다.
  84. *
  85. * </pre>
  86. * @param : pPattern - syntex 참조
  87. * <pre>
  88. *
  89. * # syntex
  90. *
  91. * YYYY : hour in am/pm (1~12)
  92. * MM : month in year(number)
  93. * MON : month in year(text) 예) "January"
  94. * DD : day in month
  95. * DAY : day in week 예) "Sunday"
  96. * HH : hour in am/pm (1~12)
  97. * hh : hour in day (0~23)
  98. * mm : minute in hour
  99. * ss : second in minute
  100. * SS : millisecond in second
  101. * a : am/pm 예) "AM"
  102. *
  103. * </pre>
  104. *
  105. * @return : Pattern 형태의 문자열
  106. * @---------------------------------------------------
  107. */
  108. function getDateFormat(pPattern)
  109. {
  110. var GLB_MONTH_IN_YEAR = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
  111. var GLB_DAY_IN_WEEK = new Array("Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday");
  112. var year = this.getFullYear();
  113. var month = this.getMonth() + 1;
  114. var day = this.getDate();
  115. var dayInWeek = this.getDay();
  116. var hour24 = this.getHours();
  117. var ampm = (hour24 < 12) ? 0 : 1;
  118. var hour12 = (hour24 > 12) ? (hour24 - 12) : hour24;
  119. var min = this.getMinutes();
  120. var sec = this.getSeconds();
  121. var YYYY = "" + year;
  122. var YY = YYYY.substr(2);
  123. var MM = (("" + month).length == 1) ? "0" + month : "" + month;
  124. var MON = GLB_MONTH_IN_YEAR[month-1];
  125. var DD = (("" + day).length == 1) ? "0" + day : "" + day;
  126. var DAY = GLB_DAY_IN_WEEK[dayInWeek];
  127. var HH = (("" + hour12).length == 1) ? "0" + hour12 : "" + hour12;
  128. var hh = (("" + hour24).length == 1) ? "0" + hour24 : "" + hour24;
  129. var mm = (("" + min).length == 1) ? "0" + min : "" + min;
  130. var ss = (("" + sec).length == 1) ? "0" + sec : "" + sec;
  131. var SS = "" + this.getMilliseconds();
  132. var a = (a == 0) ? "AM" : "PM";
  133. var dateStr;
  134. var index = -1;
  135. if (typeof(pPattern) == "undefined") {
  136. dateStr = "YYYYMMDD";
  137. } else {
  138. dateStr = pPattern;
  139. }
  140. dateStr = dateStr.replace(/a/g, a);
  141. dateStr = dateStr.replace(/YYYY/g, YYYY);
  142. dateStr = dateStr.replace(/YY/g, YY);
  143. dateStr = dateStr.replace(/MM/g, MM);
  144. dateStr = dateStr.replace(/MON/g, MON);
  145. dateStr = dateStr.replace(/DD/g, DD);
  146. dateStr = dateStr.replace(/DAY/g, DAY);
  147. dateStr = dateStr.replace(/hh/g, hh);
  148. dateStr = dateStr.replace(/HH/g, HH);
  149. dateStr = dateStr.replace(/mm/g, mm);
  150. dateStr = dateStr.replace(/ss/g, ss);
  151. dateStr = dateStr.replace(/SS/g, SS);
  152. return dateStr;
  153. }
  154. /**
  155. * @desc : 특정일자의 상대일자(+/-)를 계산
  156. * @param : pNum - 구하고자 하는 상대일 수 (+/-)
  157. * @param : pKind - 구하고자 하는 기준(위 참조)
  158. * <pre>
  159. * pKind에 따른 상대일자를 계산한다.
  160. *
  161. * "Y" : 년
  162. * "M" : 월
  163. * "D" : 일
  164. * "h" : 시
  165. * "m" : 분
  166. * "s" : 초
  167. *
  168. * default는 "D"
  169. *
  170. * 함수 호출시 다음과 같이 사용한다.
  171. *
  172. * 1) date.getAddDate(10) --> default로 일에 대한 상대일을 구한다.
  173. * 2) date.getAddDate(10, "Y") --> 년도에 대한 상대일을 구한다.
  174. * </pre>
  175. * @return : Date
  176. * @---------------------------------------------------
  177. */
  178. function getAddDate(pNum, pKind)
  179. {
  180. var rtnDate = this;
  181. if(isNull(pKind)) pKind = "D";
  182. switch(pKind){
  183. case "Y" : rtnDate.setFullYear(this.getFullYear() + pNum);break;
  184. case "M" : rtnDate.setMonth(this.getMonth() + pNum);break;
  185. case "D" : rtnDate.setDate(this.getDate() + pNum);break;
  186. case "h" : rtnDate.setHours(this.getHours() + pNum);break;
  187. case "m" : rtnDate.setMinutes(this.getMinutes() + pNum);break;
  188. case "s" : rtnDate.setSeconds(this.getSeconds() + pNum);break;
  189. }
  190. return rtnDate;
  191. }
  192. /**
  193. * @desc : Kind에 해당하는 요일을 반환
  194. * @param : pKind - 종류 (위 참조)
  195. * <pre>
  196. * kind
  197. * "K" or "k" : 한국어 -> 일,월,화,수,목,금,토
  198. * "C" or "c" : 한자 -> 日,月,火,水,木,金,土
  199. * "E" or "e" : 영어 -> Sun,Mon,Tue,Wed,Thu,Fri,Sat
  200. * "N" or "n" : 숫자 -> 0,1,2,3,4,5,6
  201. * </pre>
  202. * @return : 요일 String (위 참조)
  203. * @---------------------------------------------------
  204. */
  205. function getDayOfWeek(pKind)
  206. {
  207. if(pKind.toUpperCase() == "K") {
  208. var week = new Array("일","월","화","수","목","금","토");
  209. return week[this.getDay()];
  210. } else if(pKind.toUpperCase() == "C") {
  211. var week = new Array("日","月","火","水","木","金","土");
  212. return week[this.getDay()];
  213. } else if(pKind.toUpperCase() == "E") {
  214. var week = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
  215. return week[this.getDay()];
  216. } else if(pKind.toUpperCase() == "N") {
  217. return this.getDay() + "";
  218. }
  219. return "";
  220. }
  221. /**
  222. * @group : Date prototype function
  223. * @ver : 2004.06.30 (KUHDEV-0001)
  224. * @by : Mr.Joe.
  225. * @---------------------------------------------------
  226. * @type : Date prototype function
  227. * @access : public
  228. * @desc : 해당일의 마지막 일을 계산
  229. * @return : 마지막 일자
  230. * @---------------------------------------------------
  231. */
  232. function getMonthDay()
  233. {
  234. var year = this.getFullYear();
  235. var month = this.getMonth();
  236. with(new Date(year, month + 1, 1, 12)) { //MM = 1 .. 12
  237. setDate(0);
  238. return getDate();
  239. }
  240. }
  241. /**
  242. * @---------------------------------------------------
  243. * @desc : 윤년인지 아닌지 점검
  244. * @return : true/false
  245. * @---------------------------------------------------
  246. */
  247. function isLeapYear()
  248. {
  249. var yyyy = this.getFullYear();
  250. return (new Date(yyyy, 1, 29)).getMonth() == 1
  251. }
  252. /**
  253. * @---------------------------------------------------
  254. * @desc : 윤년인지 아닌지 점검
  255. * @return : true/false
  256. * @---------------------------------------------------
  257. */
  258. function isLeapYear(year) {
  259. var yyyy = parseInt(year);
  260. return (new Date(yyyy, 1, 29)).getMonth() == 1
  261. }
  262. /**
  263. * @---------------------------------------------------
  264. * @desc : 옵션에 따라 Date형을 DateTime형 String으로 변환
  265. * @param : pDate - Date 객체
  266. * @param : pMode - 대소문자 구분 없음
  267. * <pre>
  268. * '기본' - 일자 + 시간,
  269. 'D' - 일자,
  270. 'T' - 시간,
  271. 'W' - 요일,
  272. 'S' - 시간 + 초,
  273. 'A' - 전체 + 초
  274. * </pre>
  275. * @return : String "200406081415"
  276. * @---------------------------------------------------
  277. */
  278. function getDateTime( pDate, pMode ){
  279. var rtnStr = null;
  280. sFDate = pDate.getFullYear();
  281. sFDate = sFDate.toString() + (( pDate.getMonth() + 1 > 9 ) ? pDate.getMonth() + 1 : "0" + (pDate.getMonth() + 1));
  282. sFDate = sFDate.toString() + (( pDate.getDate() > 9 ) ? pDate.getDate() : "0" + pDate.getDate());
  283. sFTime = (( pDate.getHours() > 9 ) ? pDate.getHours() : "0" + pDate.getHours());
  284. sFTime = sFTime.toString() + (( pDate.getMinutes() > 9 ) ? pDate.getMinutes() : "0" + pDate.getMinutes());
  285. sFSec = (( pDate.getSeconds() > 9 ) ? pDate.getSeconds() : "0" + pDate.getSeconds() );
  286. var x = new Array("일", "월", "화", "수", "목", "금", "토");
  287. sWeek = x[pDate.getDay()];
  288. switch( pMode.toUpperCase() ){
  289. case 'D': // YEAR + MONTH + DATE
  290. rtnStr = sFDate;
  291. break;
  292. case 'T': // HOUR + MINUTE
  293. rtnStr = sFTime;
  294. break;
  295. case 'S': // HOUR + MINUTE + SECONDS
  296. rtnStr = sFTime + sFSec;
  297. break;
  298. case 'A': // YEAR + MONTH + DATE + HOUR + MINUTE + SECONDS
  299. rtnStr = sFDate + sFTime + sFSec;
  300. break;
  301. case 'W': // WEEK
  302. rtnStr = sWeek;
  303. break;
  304. default: // YEAR + MONTH + DATE + HOUR + MINUTE
  305. rtnStr = sFDate + sFTime;
  306. }
  307. return rtnStr;
  308. }
  309. /**
  310. * @desc : 유효한 날짜, 시간 인지 점검
  311. * @param : pDateString - 날짜 문자열
  312. * @param : pFormat - 아래 Syntex 참조
  313. * <pre>
  314. * # syntex
  315. *
  316. * YYYY : hour in am/pm (1~12)
  317. * MM : month in year(number)
  318. * MON : month in year(text) 예) "January"
  319. * DD : day in month
  320. * DAY : day in week 예) "Sunday"
  321. * HH : hour in am/pm (1~12)
  322. * hh : hour in day (0~23)
  323. * mm : minute in hour
  324. * ss : second in minute
  325. * SS : millisecond in second
  326. * a : am/pm 예) "AM"
  327. *
  328. * 사용예> isValidDateTime("20030229", "YYYYMMDD")
  329. * isValidDateTime("11:61", "hh:mm");
  330. *
  331. * </pre>
  332. * @return : true/false
  333. * @---------------------------------------------------
  334. */
  335. function isValidDateTime(pDateString, pFormat)
  336. {
  337. var dt = pDateString.toDate(pFormat).getDateFormat(pFormat);
  338. return (pDateString == dt);
  339. }
  340. /**
  341. * @desc : YYYY/MM/DD or YYYY-MM-DD -> YYYYMMDD 로 변환
  342. * @param : pDateString - 구분자('/' or '-')가 들어간 일자 문자열
  343. * @return : 구분자 제외한 날짜 String
  344. * @---------------------------------------------------
  345. */
  346. function getRemoveFormatter(pDateString)
  347. {
  348. if(pDateString.length == 10) {
  349. var arrDate = new Array(3);
  350. arrDate = pDateString.split("/");
  351. if(arrDate.length != 3) {
  352. arrDate = pDateString.split("-");
  353. }
  354. return arrDate[0] + arrDate[1] + arrDate[2];
  355. } else {
  356. return pDateString;
  357. }
  358. }
  359. /**
  360. * @group :
  361. * @ver : 2004.06.30 (KUHDEV-0001)
  362. * @by : Mr.Joe.
  363. * @---------------------------------------------------
  364. * @type : function
  365. * @access : public
  366. * @desc : 유효한 월인지 점검
  367. * @param : pMonth - 월 문자열
  368. * @return : true/false
  369. * @---------------------------------------------------
  370. */
  371. function isValidMonth(pMonth)
  372. {
  373. var month = 0;
  374. try {
  375. month = eval(pMonth);
  376. } catch(err) {
  377. return false;
  378. }
  379. return (month >= 1 && month <= 12);
  380. }
  381. /**
  382. * @group :
  383. * @ver : 2004.06.30 (KUHDEV-0001)
  384. * @by : Mr.Joe.
  385. * @---------------------------------------------------
  386. * @type : function
  387. * @access : public
  388. * @desc : 유효한 일인지 점검
  389. * @param : pDay - 일 문자열
  390. * @return : true/false
  391. * @---------------------------------------------------
  392. */
  393. function isValidDay(pDay)
  394. {
  395. var day = 0;
  396. try {
  397. day = eval(pDay);
  398. } catch(err) {
  399. return false;
  400. }
  401. return (day >= 1 && day <= 31);
  402. }
  403. /**
  404. * @---------------------------------------------------
  405. * @desc : 두 일자사이의 차를 다양한 형태의 날짜 단위로 반환
  406. * @param : fromDate - 시작일자 문자열 (YYYYMMDD or YYYY/MM/DD or YYYY-MM-DD)
  407. * @param : endDate - 종료일자 문자열 (YYYYMMDD or YYYY/MM/DD or YYYY-MM-DD)
  408. * @param : format - 반환될 날짜차이 포맷(dd:일자, mm:월, yyyy:년, yyyymm:년월, mmdd:월일, yyyymmdd:년월일 / 생략시 일자 반환)
  409. * @return : 종료일자에서 시작일자를 뺀 일자(format 이 주어진 경우 년/월/일 구분은 "/"로 표현된다.)
  410. * @---------------------------------------------------
  411. */
  412. function getDateInterval(fromDate, endDate, format)
  413. {
  414. var arrFromDate = new Array(3);
  415. var arrEndDate = new Array(3);
  416. if(fromDate.length == 8) {
  417. arrFromDate[0] = fromDate.substr(0, 4);
  418. arrFromDate[1] = fromDate.substr(4, 2);
  419. arrFromDate[2] = fromDate.substr(6, 2);
  420. } else if(fromDate.length == 10) {
  421. arrFromDate = fromDate.split("/");
  422. if(arrFromDate.length != 3) {
  423. arrFromDate = fromDate.split("-");
  424. }
  425. }
  426. if(endDate.length == 8) {
  427. arrEndDate[0] = endDate.substr(0, 4);
  428. arrEndDate[1] = endDate.substr(4, 2);
  429. arrEndDate[2] = endDate.substr(6, 2);
  430. } else if(endDate.length == 10) {
  431. arrEndDate = endDate.split("/");
  432. if(arrEndDate.length != 3) {
  433. arrEndDate = endDate.split("-");
  434. }
  435. }
  436. var rstFromDate = new Date(eval(arrFromDate[0]), eval(arrFromDate[1])-1, eval(arrFromDate[2]));
  437. var rstEndDate = new Date(eval(arrEndDate[0]), eval(arrEndDate[1])-1, eval(arrEndDate[2]));
  438. var rstFrom = rstFromDate.getTime();
  439. var rstEnd = rstEndDate.getTime();
  440. var daydue = Math.ceil((rstEnd - rstFrom) / (24 * 60 * 60 * 1000));
  441. var yeardue = 0;
  442. var monthdue = 0;
  443. // 일자(dd)로 반환
  444. if (format == null || format == "" || format.toLowerCase() == "dd") {
  445. return daydue;
  446. } else {
  447. format = format.toLowerCase();
  448. }
  449. var year = arrFromDate[0];
  450. var month = arrFromDate[1];
  451. var day = arrFromDate[2];
  452. var dayCount = 0;
  453. // 시작일자가 1일이 아닌경우
  454. if (day != 1) {
  455. month += 1;
  456. }
  457. do {
  458. if (month > 12) {
  459. month = 1;
  460. year += 1;
  461. }
  462. dayCount = getDayCountForMonth(year, month);
  463. if (daydue < dayCount) {
  464. break;
  465. }
  466. daydue = daydue - dayCount;
  467. month++;
  468. monthdue++;
  469. if (format == "yyyy" && daydue < 365 && (monthdue % 12) == 0) {
  470. break;
  471. }
  472. } while (true);
  473. // 년도 계산
  474. if (format != "mmdd" && format != "mm" && monthdue >= 12) {
  475. yeardue = monthdue / 12;
  476. monthdue = monthdue % 12;
  477. }
  478. var result = "";
  479. if (format == "yyyy") {
  480. result = yeardue;
  481. } else if (format == "mm") {
  482. result = monthdue;
  483. } else if (format == "mmdd") {
  484. result = monthdue + "/" + daydue;
  485. } else if (format == "yyyymm") {
  486. result = yeardue + "/" + monthdue;
  487. } else if (format == "yyyymmdd") {
  488. result = yeardue + "/" + monthdue + "/" + daydue;
  489. }
  490. return result;
  491. }
  492. /**
  493. * @---------------------------------------------------
  494. * @desc : 해당년의 해당 월이 몇일인지를 반환
  495. * @param : year - 년도(yyyy)
  496. * @param : month - 달(mm)
  497. * @return : 해당 년도의 해당 달이 몇일을 가지고 있는지를 반환한다.(윤년계산 포함)
  498. * @---------------------------------------------------
  499. */
  500. function getDayCountForMonth(year, month) {
  501. var normal = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  502. var leap = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  503. if (isLeapYear(year)) {
  504. return leap[month - 1];
  505. } else {
  506. return normal[month - 1];
  507. }
  508. }
  509. /**
  510. * @---------------------------------------------------
  511. * @desc : 두 시간의 차를 초단위로 반환
  512. * @param : fromTime - 시작시간 문자열 (hhmm or hh:mm or hhmmss or hh:mm:ss)
  513. * @param : endTime - 종료시간 문자열 (hhmm or hh:mm or hhmmss or hh:mm:ss)
  514. * @return : (종료시간 - 시작시간) 를 초단위로 반환
  515. * @---------------------------------------------------
  516. */
  517. function getTimeInterval(fromTime, endTime)
  518. {
  519. var arrFromTime = new Array(3);
  520. var arrEndTime = new Array(3);
  521. if(fromTime.length == 4 || fromTime.length == 6) {
  522. arrFromTime[0] = fromTime.substr(0, 2);
  523. arrFromTime[1] = fromTime.substr(2, 2);
  524. arrFromTime[2] = fromTime.substr(4, 2);
  525. } else if(fromTime.length == 5 || fromTime.length == 8) {
  526. arrFromTime = fromTime.split(":");
  527. }
  528. if(arrFromTime[2].length == 0) arrFromTime[2] = 0;
  529. if(endTime.length == 4 || endTime.length == 6) {
  530. arrEndTime[0] = endTime.substr(0, 2);
  531. arrEndTime[1] = endTime.substr(2, 2);
  532. arrEndTime[2] = endTime.substr(4, 2);
  533. } else if(endTime.length == 5 || endTime.length == 8) {
  534. arrEndTime = endTime.split(":");
  535. }
  536. if(arrEndTime[2].length == 0) arrEndTime[2] = 0;
  537. var rstFromTime = new Date(2000, 1, 1, eval(arrFromTime[0]), eval(arrFromTime[1]), eval(arrFromTime[2]), 0);
  538. var rstEndTime = new Date(2000, 1, 1, eval(arrEndTime[0]), eval(arrEndTime[1]), eval(arrEndTime[2]), 0);
  539. var diffTime = (rstEndTime - rstFromTime) / 1000;
  540. return diffTime;
  541. }
  542. /**
  543. * @desc : 현재날짜 시간 서버시간으로 변경
  544. * @param :
  545. * @param :
  546. * @return : date
  547. * @---------------------------------------------------
  548. */
  549. function getNewDate(){
  550. var rtnDate = new Date();
  551. var timediff = getGlobalVariable("timediff");
  552. var serverInterval = 0;
  553. var timezoneoffset = (540 + rtnDate.getTimezoneOffset())*60*1000
  554. if(!isNull(timediff) && !isNaN(timediff)){
  555. serverInterval = parseInt(timediff);
  556. }
  557. rtnDate.setTime(rtnDate.getTime() + serverInterval + timezoneoffset);
  558. return rtnDate;
  559. }
  560. /**
  561. * @desc : 현재날짜 시간 반환
  562. * @param :
  563. * @param :
  564. * @return : YYYYMMDD HHMMSS
  565. * @---------------------------------------------------
  566. */
  567. function getCurrentDateTime(){
  568. return getCurrentDate() + " " + getCurrentTime();
  569. }
  570. /**
  571. * @desc : 현재날짜 반환
  572. * @param :
  573. * @param :
  574. * @return : YYYYMMDD
  575. * @---------------------------------------------------
  576. */
  577. function getCurrentDate()
  578. {
  579. var sDate = getNewDate();
  580. rtnDate = sDate.getFullYear();
  581. rtnDate = rtnDate.toString() + (( sDate.getMonth() + 1 > 9 ) ? sDate.getMonth() + 1 : "0" + (sDate.getMonth() + 1));
  582. rtnDate = rtnDate.toString() + (( sDate.getDate() > 9 ) ? sDate.getDate() : "0" + sDate.getDate()) ;
  583. return rtnDate;
  584. }
  585. /**
  586. * @desc : 현재 시간 반환
  587. * @param :
  588. * @param :
  589. * @return : hhmmssSS
  590. * @---------------------------------------------------
  591. */
  592. function getCurrentTime()
  593. {
  594. var sDate = getNewDate();
  595. rtnTime = (( sDate.getHours() > 9 ) ? sDate.getHours() : "0" + sDate.getHours());
  596. rtnTime = rtnTime.toString() + (( sDate.getMinutes() > 9 ) ? sDate.getMinutes() : "0" + sDate.getMinutes());
  597. rtnTime = rtnTime.toString() + (( sDate.getSeconds() > 9 ) ? sDate.getSeconds() : "0" + sDate.getSeconds());
  598. return rtnTime;
  599. }
  600. /**
  601. * @desc : 현재 요일 반환
  602. * @param : 한글(K) or 숫자
  603. * @param :
  604. * @return : 0, 1, 2.....or 일, 월, 화......
  605. * @---------------------------------------------------
  606. */
  607. function getCurrentWeek(flag)
  608. {
  609. var sDate = getNewDate();
  610. sWeek = new Array("일", "월", "화", "수", "목", "금", "토");
  611. rtnWeek = (flag == "K") ? sWeek[sDate.getDay()] : sDate.getDay();
  612. return rtnWeek;
  613. }
  614. /**
  615. * @desc : 스트링형태의 날짜데이터 반환
  616. * @param : 문자열형태 날짜데이터
  617. * @param : 패턴
  618. */
  619. function getStrDate(strDate) {
  620. var strDate = strDate;
  621. var strYear = "";
  622. var strMonth = "";
  623. var strDay = "";
  624. var strHour = "";
  625. var strMin = "";
  626. var strSec = "";
  627. if (strDate.length < 14) {
  628. //
  629. alert("데이터는 14자리 이상이어야 합니다.");
  630. return null;
  631. }
  632. strYear = strDate.substr(0, 4);
  633. strMonth = strDate.substr(4, 2);
  634. strDay = strDate.substr(6, 2);
  635. strHour = strDate.substr(8, 2);
  636. strMin = strDate.substr(10, 2);
  637. strSec = strDate.substr(12, 2);
  638. strDate = strYear + "-";
  639. strDate += strMonth + "-";
  640. strDate += strDay + " ";
  641. strDate += strHour + ":";
  642. strDate += strMin + ":";
  643. strDate += strSec;
  644. return strDate;
  645. }