|
//함수 소스를 그대로 홀립니다.
//복사하시어 파일로 만들어 인포트 하세요
// 파일명은 gf_relativeymdt.srf 로 하세요
//===========이하 소스=================================
$PBExportHeader$gf_relativeymdt.srf $PBExportComments$년월일시를 가감한다. global type gf_relativeymdt from function_object end type
forward prototypes global function datetime gf_relativeymdt (string as_gubun, datetime adt_datetime, integer as_ad) end prototypes
global function datetime gf_relativeymdt (string as_gubun, datetime adt_datetime, integer as_ad);// DateTime을 더하고 빼는 함수 // datetime gf_RelativeYMDT(string as_gubun, datetime adt_datetime, integer as_Ad) // as_gubun -> ["Y", "M", "D", "T"] 년, 월 , 일, 시 // adt_datetime -> 변환될 일시 // as_Ad -> 가감 숫자 DateTime ldt_datetime String ls_y, ls_m, ls_d, ls_time Integer li_y, li_m, li_d Date ld_date time lt_time integer li_mod if as_Ad = 0 then return adt_datetime ls_y = String(adt_datetime, "YYYY") ls_m = String(adt_datetime, "MM") ls_d = String(adt_datetime, "DD") ls_time = String(adt_datetime, "HH:MM:SS") li_y = Integer(ls_y) li_m = Integer(ls_m) li_d = Integer(ls_d) lt_time = time(ls_time) ld_date = Date(adt_datetime) choose case as_gubun Case "Y" //년가감 li_y = li_y + as_Ad ls_y = String(li_y, "0000") ld_date = Date(ls_y+"-"+ls_m+"-"+ls_d) Case "M" //월가감 li_m = li_m + as_Ad if li_m = 0 then li_m = 12 li_y = li_y - 1 elseif li_m > 0 then if li_m > 12 then li_mod = 1 li_m = li_m - 12 Do While li_m > 12 li_mod += 1 li_m = li_m - 12 Loop li_y = li_y + li_mod end if else if li_m < -12 then li_mod = 1 li_m = li_m + 12 Do While li_m < -12 li_mod += 1 li_m = li_m + 12 loop li_y = li_y - li_mod else li_y = li_y - 1 li_m = 12 + li_m end if end if ls_y = String(li_y, "0000") ls_m = String(li_m, "00") if ls_d = '31' then choose case ls_m case '01', '03', '05', '07', '08', '10', '12' ls_d = ls_d Case '02' if Mod(li_y, 4) = 0 or Mod(li_y, 400) = 0 then ls_d = '29' else ls_d = '28' end if Case '04', '06', '09', '11' ls_d = '30' end choose end if ld_date = Date(ls_y+"-"+ls_m+"-"+ls_d) Case "D" //일가감 ld_date = RelativeDate ( ld_date, as_Ad ) Case "T" //시가감 lt_time = RelativeTime ( lt_time, as_Ad ) end choose
ldt_dateTime = DateTime(ld_date, lt_time)
return ldt_dateTime end function |