RosettaCodeData/Task/Date-manipulation/Maple/date-manipulation-1.maple

16 lines
639 B
Plaintext

twelve_hours := proc(str)
local dt, zone;
local months := ["January","February","March","April","May","June","July","August","September","October","November","December"];
dt := StringTools:-ParseTime("%B %d %Y %l:%M%p", str);
zone := StringTools:-RegSplit(" ", str)[-1];
dt := Date(dt:-year, dt:-month, dt:-monthDay, dt:-hour, dt:-minute, timezone = zone);
dt := dt + 12 * Unit(hours);
printf("%s %d %d ", months[Month(dt)], DayOfMonth(dt), Year(dt));
if (HourOfDay(dt) >= 12) then
printf("%d:%dpm ", HourOfDay(dt)-12, Minute(dt));
else
printf("%d:%dam ", HourOfDay(dt), Minute(dt));
end if;
printf(TimeZone(dt));
end proc;