ballardw, thank you for your help. I ended up with writing a function like below. /*define the function*/
libname myfunc "...";
proc fcmp outlib=myfunc.util.datetime;
function hoursInADay(myDate);
if missing(myDate) then return(.);
jg_t_year = year(myDate);
jg_t_shortday = nwkdom(2, 1, 3, jg_t_year);
jg_t_longday = nwkdom(1, 1, 11, jg_t_year);
if myDate=jg_t_shortday then jg_num_of_hours=23;
else if myDate=jg_t_longday then jg_num_of_hours=25;
else jg_num_of_hours=24;
return(jg_num_of_hours);
endsub;
run;
/*test the function*/
libname myfunc "...";
options cmplib=myfunc.util;
data _NULL_;
array myDates{3} _temporary_ ('28MAR2019'd, '10MAR2019'd, '4NOV2018'd);
do i=1 to dim(myDates);
hours = hoursInADay(myDates{i});
put myDates{i}=yymmdd10.;
put hours=/;
end;
run; And the results are what I expected: myDates[1]=2019-03-28 hours=24 myDates[2]=2019-03-10 hours=23 myDates[3]=2018-11-04 hours=25
... View more