본문 바로가기

개발/javascript

날자 객체 Date Object

날짜와 날짜 차이 일수 계산


/*==============================================================

 Description : 날짜와 날짜 차이 일수 계산

 Arg         : start  - 문자형 날짜값  (end보다 날짜가 작아야 됨)

               end    - 문자형 날짜값  (start보다 날짜가 커야 됨)

 return      : 차이 일수

===============================================================*/

function dayDif(start, end){

    var f=document.frm;

    var v1=start.split("-");

    var v2=end.split("-");


    var a1=new Date(v1[0],v1[1],v1[2]).getTime();

    var a2=new Date(v2[0],v2[1],v2[2]).getTime();

    var b=(a2-a1)/(1000*60*60*24);


    return b;

 }


시작일과 종료일 정상여부와 시작일이 작은지 검사


/*==============================================================

 Description : 시작일과 종료일 정상여부와 시작일이 작은지 검사

 Arg         : start  - 문자형 날짜값

               end    - 문자형 날짜값

 return      : true  - 정상

               flase - 오류

===============================================================*/

function stratEndCheck(start,end){


    v1=start.split("-");

    v2=end.split("-");


    a1=new Date(v1[0],v1[1],v1[2]).getTime();

    a2=new Date(v2[0],v2[1],v2[2]).getTime();


  if(a1<a2||a2 == ''){

    return true;

  }else{

    return false;

  }

}


오늘날짜


//오늘날짜

function getToDay()

{

   var date = datToday;


var year  = date.getFullYear();

var month = date.getMonth() + 1; // 1월=0,12월=11이므로 1 더함

var day   = date.getDate();


if (("" + month).length == 1) { month = "0" + month; }

if (("" + day).length   == 1) { day   = "0" + day;   }


return ("" + year + month + day)

}


 datToday=date()

 intThisYear = Year(datToday);    --년도 return

 intThisMonth = Month(datToday);  --월 return

 intThisDay = day(datToday);      --일 return


Time 스트링을 자바스크립트 Date 객체로 변환


/**

 * Time 스트링을 자바스크립트 Date 객체로 변환

 * parameter time: Time 형식의 String

 */

function toTimeObject(time) { //parseTime(time)

    var year  = time.substr(0,4);

    var month = time.substr(4,2) - 1; // 1월=0,12월=11

    var day   = time.substr(6,2);

    var hour  = time.substr(8,2);

    var min   = time.substr(10,2);


    return new Date(year,month,day,hour,min);

}


Date 객체를 Time 스트링으로 변환


/**

 * 자바스크립트 Date 객체를 Time 스트링으로 변환

 * parameter date: JavaScript Date Object

 */

function toTimeString(date) { //formatTime(date)

    var year  = date.getFullYear();

    var month = date.getMonth() + 1; // 1월=0,12월=11이므로 1 더함

    var day   = date.getDate();

    var hour  = date.getHours();

    var min   = date.getMinutes();

 

    if (("" + month).length == 1) { month = "0" + month; }

    if (("" + day).length   == 1) { day   = "0" + day;   }

    if (("" + hour).length  == 1) { hour  = "0" + hour;  }

    if (("" + min).length   == 1) { min   = "0" + min;   }

 

    return ("" + year + month + day + hour + min)

}


월의 끝 일자 얻기 (말일 구하기)


//월의 끝 일자 얻기

function getEndDate(datestr){


//널인지? 

if(isEmpty(datestr)){

return null;


//숫자인지?

if(!isNum(datestr)){

return null;

}


//길이가 8자리?

if(datestr.length != 6){

return null;

}


var yy = Number(datestr.substring(0,4));

var mm = Number(datestr.substring(4,6));


//윤년 검증

var boundDay = "";


if(mm != 2){

var mon=new Array(31,28,31,30,31,30,31,31,30,31,30,31);

boundDay = mon[mm-1];

} else {

if (yy%4 == 0 && yy%100 != 0 || yy%400 == 0){

boundDay = 29;

}else {

boundDay = 28;

}

}


return boundDay;  

}


Time이 현재시각 이후(미래)인지 체크


/**

 * Time이 현재시각 이후(미래)인지 체크

 */

function isFutureTime(time) {

    return (toTimeObject(time) > new Date());

}


Time이 현재시각 이전(과거)인지 체크


/**

 * Time이 현재시각 이전(과거)인지 체크

 */

function isPastTime(time) {

    return (toTimeObject(time) < new Date());

}


주어진 Time 과 y년 m월 d일 h시 차이나는 Time을 리턴


/**

 * 주어진 Time 과 y년 m월 d일 h시 차이나는 Time을 리턴

 * ex) var time = form.time.value; //'20000101000'

 *     alert(shiftTime(time,0,0,-100,0));

 *     => 2000/01/01 00:00 으로부터 100일 전 Time

 */

function shiftTime(time,y,m,d,h) { //moveTime(time,y,m,d,h)

    var date = toTimeObject(time);

 

    date.setFullYear(date.getFullYear() + y); //y년을 더함

    date.setMonth(date.getMonth() + m);       //m월을 더함

    date.setDate(date.getDate() + d);         //d일을 더함

    date.setHours(date.getHours() + h);       //h시를 더함

 

    return toTimeString(date);

}


두 Time이 몇 개월 차이나는지 구함


/**

 * 두 Time이 몇 개월 차이나는지 구함

 * time1이 time2보다 크면(미래면) minus(-)

 */

function getMonthInterval(time1,time2) { //measureMonthInterval(time1,time2)

    var date1 = toTimeObject(time1);

    var date2 = toTimeObject(time2);

 

    var years  = date2.getFullYear() - date1.getFullYear();

    var months = date2.getMonth() - date1.getMonth();

    var days   = date2.getDate() - date1.getDate();

 

    return (years * 12 + months + (days >= 0 ? 0 : -1) );

}


두 Time이 며칠 차이나는지 구함


/**

 * 두 Time이 며칠 차이나는지 구함

 * time1이 time2보다 크면(미래면) minus(-)

 */

function getDayInterval(time1,time2) {

    var date1 = toTimeObject(time1);

    var date2 = toTimeObject(time2);

    var day   = 1000 * 3600 * 24; //24시간

 

    return parseInt((date2 - date1) / day, 10);

}


두 Time이 몇 시간 차이나는지 구함


/**

 * 두 Time이 몇 시간 차이나는지 구함

 * time1이 time2보다 크면(미래면) minus(-)

 */

function getHourInterval(time1,time2) {

    var date1 = toTimeObject(time1);

    var date2 = toTimeObject(time2);

    var hour  = 1000 * 3600; //1시간

 

    return parseInt((date2 - date1) / hour, 10);

}


현재 시각을 Time 형식으로 리턴


/**

 * 현재 시각을 Time 형식으로 리턴

 */

function getCurrentTime() {

    return toTimeString(new Date());

}


현재 시각과 y년 m월 d일 h시 차이나는 Time을 리턴


/**

 * 현재 시각과 y년 m월 d일 h시 차이나는 Time을 리턴

 */

function getRelativeTime(y,m,d,h) {

 

    return shiftTime(getCurrentTime(),y,m,d,h);

}


현재 年을 YYYY형식으로 리턴


/**

 * 현재 年을 YYYY형식으로 리턴

 */

function getYear() {

 

    return getCurrentTime().substr(0,4);

}


현재 月을 MM형식으로 리턴


/**

 * 현재 月을 MM형식으로 리턴

 */

function getMonth() {

 

    return getCurrentTime().substr(4,2);

}


현재 日을 DD형식으로 리턴


/**

 * 현재 日을 DD형식으로 리턴

 */

function getDay() {

 

    return getCurrentTime().substr(6,2);

}


현재 時를 HH형식으로 리턴


/**

 * 현재 時를 HH형식으로 리턴

 */

function getHour() {

 

    return getCurrentTime().substr(8,2);

}


일에 대한 요일 찾기


/**

 * 일에 대한 요일 찾기

 * ex) alert('오늘은 ' + getDayOfWeek() + '요일입니다.');

 */

function getDayOfWeek() {

    var now = new Date();

 

    var day = now.getDay(); //일요일=0,월요일=1,...,토요일=6

    var week = new Array('일','월','화','수','목','금','토');

    return week[day];

}


특정날짜의 요일을 구한다


/**

 * 특정날짜의 요일을 구한다.

 */

function getDayOfWeek(time) {

    var now = toTimeObject(time);


    var day = now.getDay(); //일요일=0,월요일=1,...,토요일=6

    var week = new Array('일','월','화','수','목','금','토');

    return week[day];

}


유효하는(존재하는) Time 인지 체크


/**

 * 유효하는(존재하는) Time 인지 체크

 * ex) var time = form.time.value; //'200102310000'

 *     if (!isValidTime(time)) {

 *         alert("올바른 날짜가 아닙니다.");

 *     }

 */

function isValidTime(time) {

    var year  = time.substring(0,4);

    var month = time.substring(4,6);

    var day   = time.substring(6,8);

    var hour  = time.substring(8,10);

    var min   = time.substring(10,12);

 

    if (parseInt(year,10) >= 1900  && isValidMonth(month) &&

        isValidDay(year,month,day) && isValidHour(hour)   &&

        isValidMin(min)) {

        return true;

    }

    return false;

}


유효한(존재하는) 시(時)인지 체크


/**

 * 유효한(존재하는) 시(時)인지 체크

 */

function isValidHour(hh) {

    var h = parseInt(hh,10);

    return (h >= 1 && h <= 24);

}


유효한(존재하는) 분(分)인지 체크


/**

 * 유효한(존재하는) 분(分)인지 체크

 */

function isValidMin(mi) {

    var m = parseInt(mi,10);

    return (m >= 1 && m <= 60);

}


유효한(존재하는) 월(月)인지 체크


function isValidMonth(mm) {

    var m = parseInt(mm,10);

    return (m >= 1 && m <= 12);

}


유효한(존재하는) 일(日)인지 체크


/**

 * 유효한(존재하는) 일(日)인지 체크

 */

function isValidDay(yyyy, mm, dd) {

    var m = parseInt(mm,10) - 1;

    var d = parseInt(dd,10);

 

    var end = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

    if ((yyyy % 4 == 0 && yyyy % 100 != 0) || yyyy % 400 == 0) {

        end[1] = 29;

    }

 

    return (d >= 1 && d <= end[m]);

}