View Raw SPL
/*****************************************************************************
* *
* HMS2TIME.SPL Copyright (C) 2024 DSP Development Corporation *
* All Rights Reserved *
* *
* Author: Randy Race *
* *
* Synopsis: Converts a series to time values *
* *
* Revisions: 2 Dec 2024 RRR Creation *
* *
*****************************************************************************/
#if @HELP_HMS2TIME
HMS2TIME
Purpose: Converts series of hours, minutes, seconds values to time values.
Syntax: HMS2TIME(hours, minutes, seconds)
hours - A scalar or series, the hours values.
minutes - A scalar or series, the minutes values.
seconds - A scalar or series, the seconds values.
Returns: A series or array of time of day values.
Example:
W1: hms2time(12, 0, 0)
W1 contains the time 12:00:00 with the equivalent time of day
value of 43200 seconds.
Example:
W1: {11, 12, 13}
W2: {15, 30, 45}
W3: {10, 20, 30}
W4: hms2time(w1, w2, w3)
W1 contains the hours values.
W2 contains the minutes values.
W3 contains the seconds values.
W4 contains the time series:
11:15:10
12:30:20
13:45:30
Example:
W1: hms2time(11..13, {15, 30, 45}, {10, 20, 30})
Same as above except the hour, minutes and seconds values are
entered directly as series.
W1 contains the time series:
11:15:10
12:30:20
13:45:30
Example:
W1: hms2time(11..13, {15, 30, 45}, {10, 20, 70})
Same as above except the last seconds value of 70 causes the
resulting minutes to rollover.
W1 contains the time series:
11:15:10
12:30:20
13:46:10
Remarks:
HMS2TIME creates a time series by combining individual hour,
minutes and seconds values.
Out of range minutes and seconds values are rolled over.
A time of day or TOD value is the number of seconds since
midnight.
See Also:
Time2hms
Todstr
Todmsecstr
Ymd2date
Ymdhms2dt
#endif
/* hours, minutes seconds to todmsec */
hms2time(hours = 0, minutes = 0, seconds = 0)
{
local time = {}, msec;
if (argc <= 1)
{
if (argc < 1)
{
/* current date */
hours = gettime(13);
}
if (istimestr(hours))
{
/* convert time string - force series */
time = {todmsecstr(hours)};
}
else if (isstring(hours))
{
error(sprintf("%s - unrecognized time '%s'", __FUNC__, hours));
}
}
if (isempty(time))
{
(hours, minutes, seconds) = d_or_t_2_parse_args(argc, hours, minutes, seconds);
/* conversion */
time = hours * 3600 + minutes * 60 + seconds;
}
/* Real Time if time has fractional part */
msec = any((time - int(time)) % 1);
setvunits(time, (msec ? "Real Time" : "Time"), -1);
/* tabular view */
settable(time);
return(time);
}