출처 : http://www.ihelpers.co.kr/programming/tipntech.php?CMD=view&TYPE=0&IDX=540

  1. /**
  2. * 날짜관련 자바스크립트 공통함수
  3. *
  4. * 분단위 이하(= 초)는 고려하지 않았습니다.
  5. * YYYYMMDDHHMI 형식의 String => 'Time'으로 칭함
  6. *
  7. * 주로 YYYYMMDD 까지만 쓰인다면 아래 함수들을
  8. * YYYYMMDD 형식의 String => 'Date'로 하여 적당히
  9. * 수정하시거나 아니면 함수를, 예를들어 isValidDate()처럼,
  10. * 추가하시기 바랍니다.
  11. *
  12. * @version 2.0, 2001/01/28
  13. * @author 박종진(JongJin Park), jongjpark@lgeds.lg.co.kr
  14. */
  15. /**
  16. * 유효한(존재하는) 월(月)인지 체크
  17. */
  18. function isValidMonth(mm) {
  19.     var m = parseInt(mm,10);
  20.     return (m >= 1 && m <= 12);
  21. }
  22. /**
  23. * 유효한(존재하는) 일(日)인지 체크
  24. */
  25. function isValidDay(yyyy, mm, dd) {
  26.     var m = parseInt(mm,10) - 1;
  27.     var d = parseInt(dd,10);
  28.     var end = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  29.     if ((yyyy % 4 == 0 && yyyy % 100 != 0) yyyy % 400 == 0) {
  30.         end[1] = 29;
  31.     }
  32.     return (d >= 1 && d <= end[m]);
  33. }
  34. /**
  35. * 유효한(존재하는) 시(時)인지 체크
  36. */
  37. function isValidHour(hh) {
  38.     var h = parseInt(hh,10);
  39.     return (h >= 1 && h <= 24);
  40. }
  41. /**
  42. * 유효한(존재하는) 분(分)인지 체크
  43. */
  44. function isValidMin(mi) {
  45.     var m = parseInt(mi,10);
  46.     return (m >= 1 && m <= 60);
  47. }
  48. /**
  49. * Time 형식인지 체크(느슨한 체크)
  50. */
  51. function isValidTimeFormat(time) {
  52.     return (!isNaN(time) && time.length == 12);
  53. }
  54. /**
  55. * 유효하는(존재하는) Time 인지 체크
  56. * ex) var time = form.time.value; //'200102310000'
  57. *     if (!isValidTime(time)) {
  58. *         alert("올바른 날짜가 아닙니다.");
  59. *     }
  60. */
  61. function isValidTime(time) {
  62.     var year  = time.substring(0,4);
  63.     var month = time.substring(4,6);
  64.     var day   = time.substring(6,8);
  65.     var hour  = time.substring(8,10);
  66.     var min   = time.substring(10,12);
  67.     if (parseInt(year,10) >= 1900  && isValidMonth(month) &&
  68.         isValidDay(year,month,day) && isValidHour(hour)   &&
  69.         isValidMin(min)) {
  70.         return true;
  71.     }
  72.     return false;
  73. }
  74. /**
  75. * Time 스트링을 자바스크립트 Date 객체로 변환
  76. * parameter time: Time 형식의 String
  77. */
  78. function toTimeObject(time) { //parseTime(time)
  79.     var year  = time.substr(0,4);
  80.     var month = time.substr(4,2) - 1; // 1월=0,12월=11
  81.     var day   = time.substr(6,2);
  82.     var hour  = time.substr(8,2);
  83.     var min   = time.substr(10,2);
  84.     return new Date(year,month,day,hour,min);
  85. }
  86. /**
  87. * 자바스크립트 Date 객체를 Time 스트링으로 변환
  88. * parameter date: JavaScript Date Object
  89. */
  90. function toTimeString(date) { //formatTime(date)
  91.     var year  = date.getFullYear();
  92.     var month = date.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
  93.     var day   = date.getDate();
  94.     var hour  = date.getHours();
  95.     var min   = date.getMinutes();
  96.     if (("" + month).length == 1) { month = "0" + month; }
  97.     if (("" + day).length   == 1) { day   = "0" + day;   }
  98.     if (("" + hour).length  == 1) { hour  = "0" + hour;  }
  99.     if (("" + min).length   == 1) { min   = "0" + min;   }
  100.     return ("" + year + month + day + hour + min)
  101. }
  102. /**
  103. * Time이 현재시각 이후(미래)인지 체크
  104. */
  105. function isFutureTime(time) {
  106.     return (toTimeObject(time) > new Date());
  107. }
  108. /**
  109. * Time이 현재시각 이전(과거)인지 체크
  110. */
  111. function isPastTime(time) {
  112.     return (toTimeObject(time) < new Date());
  113. }
  114. /**
  115. * 주어진 Time 과 y년 m월 d일 h시 차이나는 Time을 리턴
  116. * ex) var time = form.time.value; //'20000101000'
  117. *     alert(shiftTime(time,0,0,-100,0));
  118. *     => 2000/01/01 00:00 으로부터 100일 전 Time
  119. */
  120. function shiftTime(time,y,m,d,h) { //moveTime(time,y,m,d,h)
  121.     var date = toTimeObject(time);
  122.     date.setFullYear(date.getFullYear() + y); //y년을 더함
  123.     date.setMonth(date.getMonth() + m);       //m월을 더함
  124.     date.setDate(date.getDate() + d);         //d일을 더함
  125.     date.setHours(date.getHours() + h);       //h시를 더함
  126.     return toTimeString(date);
  127. }
  128. /**
  129. * 두 Time이 몇 개월 차이나는지 구함
  130. * time1이 time2보다 크면(미래면) minus(-)
  131. */
  132. function getMonthInterval(time1,time2) { //measureMonthInterval(time1,time2)
  133.     var date1 = toTimeObject(time1);
  134.     var date2 = toTimeObject(time2);
  135.     var years  = date2.getFullYear() - date1.getFullYear();
  136.     var months = date2.getMonth() - date1.getMonth();
  137.     var days   = date2.getDate() - date1.getDate();
  138.     return (years * 12 + months + (days >= 0 ? 0 : -1) );
  139. }
  140. /**
  141. * 두 Time이 며칠 차이나는지 구함
  142. * time1이 time2보다 크면(미래면) minus(-)
  143. */
  144. function getDayInterval(time1,time2) {
  145.     var date1 = toTimeObject(time1);
  146.     var date2 = toTimeObject(time2);
  147.     var day   = 1000 * 3600 * 24; //24시간
  148.     return parseInt((date2 - date1) / day, 10);
  149. }
  150. /**
  151. * 두 Time이 몇 시간 차이나는지 구함
  152. * time1이 time2보다 크면(미래면) minus(-)
  153. */
  154. function getHourInterval(time1,time2) {
  155.     var date1 = toTimeObject(time1);
  156.     var date2 = toTimeObject(time2);
  157.     var hour  = 1000 * 3600; //1시간
  158.     return parseInt((date2 - date1) / hour, 10);
  159. }
  160. /**
  161. * 현재 시각을 Time 형식으로 리턴
  162. */
  163. function getCurrentTime() {
  164.     return toTimeString(new Date());
  165. }
  166. /**
  167. * 현재 시각과 y년 m월 d일 h시 차이나는 Time을 리턴
  168. */
  169. function getRelativeTime(y,m,d,h) {
  170. /*
  171.     var date = new Date();
  172.     date.setFullYear(date.getFullYear() + y); //y년을 더함
  173.     date.setMonth(date.getMonth() + m);       //m월을 더함
  174.     date.setDate(date.getDate() + d);         //d일을 더함
  175.     date.setHours(date.getHours() + h);       //h시를 더함
  176.     return toTimeString(date);
  177. */
  178.     return shiftTime(getCurrentTime(),y,m,d,h);
  179. }
  180. /**
  181. * 현재 年을 YYYY형식으로 리턴
  182. */
  183. function getYear() {
  184. /*
  185.     var now = new Date();
  186.     return now.getFullYear();
  187. */
  188.     return getCurrentTime().substr(0,4);
  189. }
  190. /**
  191. * 현재 月을 MM형식으로 리턴
  192. */
  193. function getMonth() {
  194. /*
  195.     var now = new Date();
  196.     var month = now.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
  197.     if (("" + month).length == 1) { month = "0" + month; }
  198.     return month;
  199. */
  200.     return getCurrentTime().substr(4,2);
  201. }
  202. /**
  203. * 현재 日을 DD형식으로 리턴
  204. */
  205. function getDay() {
  206. /*
  207.     var now = new Date();
  208.     var day = now.getDate();
  209.     if (("" + day).length == 1) { day = "0" + day; }
  210.     return day;
  211. */
  212.     return getCurrentTime().substr(6,2);
  213. }
  214. /**
  215. * 현재 時를 HH형식으로 리턴
  216. */
  217. function getHour() {
  218. /*
  219.     var now = new Date();
  220.     var hour = now.getHours();
  221.     if (("" + hour).length == 1) { hour = "0" + hour; }
  222.     return hour;
  223. */
  224.     return getCurrentTime().substr(8,2);
  225. }
  226. /**
  227. * 오늘이 무슨 요일이야?
  228. * ex) alert('오늘은 ' + getDayOfWeek() + '요일입니다.');
  229. * 특정 날짜의 요일을 구하려면? => 여러분이 직접 만들어 보세요.
  230. */
  231. function getDayOfWeek() {
  232.     var now = new Date();
  233.     var day = now.getDay(); //일요일=0,월요일=1,...,토요일=6
  234.     var week = new Array('일','월','화','수','목','금','토');
  235.     return week[day];
  236. }
 
이올린에 북마크하기(0) 이올린에 추천하기(0)

'IT 관련 > 참고 소스' 카테고리의 다른 글

날짜관련 자바스크립트 공통함수  (3) 2006/11/11
내블로그 접속 통계 스크립트..  (0) 2006/03/22
ruby 설치..  (0) 2006/03/02
리눅스 파일,디렉토리찾기  (0) 2005/11/25
최근 생성 파일 찾기  (0) 2005/11/25
UnixUtil  (0) 2005/11/23