round-up-ymdhms

function

Library: Date and time functions (OMDATE)
Include: omdate.xin

Returns: Returns a specified date/time rounded up to the nearest indicated interval.


Declaration
define string function round-up-ymdhms value string ymdhms
                                    to value string interval

Argument definitions

ymdhms
a date/time in "YYYYMMDDhhmmss+ZHZM" format
interval
the name of the interval which you want the indicated date rounded to


Purpose

This function takes a date/time in "YYYYMMDDhhmmss+ZHZM" format and returns the same value, but rounded up to the end of an interval as indicated by the second argument.

This function rounds up to the end of a time period, and if you specify round-up-ymdhms now to "mo" the function will round up to the last second in the last minute in the last hour of the month. This is particularly useful for determining the time when licenses or agreements should expire. Only the shortest distinguishing prefix of the interval name is needed, so "y" can be used in place of "year", but "mo" and "mi" are needed to distinguish between "month" and "minute". This argument can be in either uppercase or lowercase. If this argument is unrecognized, the date/time will be returned unchanged.

Example:


  include "omdate.xin"
  process
     local stream now
     set now to now-as-ymdhms
     output "Now, unrounded                = " 
         || now
         || "%n"
         ||"Now, rounded up to the month = " 
         || round-up-ymdhms now to "mo" 
         || "%n"
  ; Result of this code was:
  ;    Now, unrounded                    = 20010215172442-0500
  ;    Now, rounded up to the month = 20010228235959-0500