HI!
I have numeric values in time variables using military time. When I try the HHMM. the output is not correct
My data values look like this
| Time |
| 120 |
| 2130 |
| 10 |
| 1128 |
| 23 |
| 50 |
Want to look like this:
| Time | Want |
| 120 | 01:20 |
| 2130 | 21:30 |
| 10 | 00:10 |
| 1128 | 11:28 |
| 23 | 00:23 |
| 50 | 00:50 |
Any suggestion appreciated!!
Before you can use a time format, you have to convert the numbers to date-time numbers.
Something like this:
time2=hms(floor(time/100),mod(time,100),0); /* Convert time to hours and minutes using the hms function */ format time2 hhmm5.;
Probably a slicker way, but this should work:
data have;
input have;
timepad = strip(put(have, z4.));
want = hms(substr(timepad, 1, 2), substr(timepad, 3, 2), 0);
format want time5.;
datalines;
120
2130
10
1128
23
50
;
Before you can use a time format, you have to convert the numbers to date-time numbers.
Something like this:
time2=hms(floor(time/100),mod(time,100),0); /* Convert time to hours and minutes using the hms function */ format time2 hhmm5.;
Mine isn't smart, but fun though-
data have;
input time;
datalines;
120
2130
10
1128
23
50
;
data want;
set have;
new_time=cats(reverse(substr(reverse(time),3)),':',substr(time,length(time)-1));
if length(new_time)=3 then new_time=cats('00',new_time);
run;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.