进行中的时间函数 4GL
Time Function in Progress 4GL
我想在代码中插入 2 个轮班时间。
- (第一班)
轮班从 8:00:00:000 开始到 19:59:59:999
- (二班)
班次从 20:00:00:000 开始到第二天 7:59:59:999
我需要获取上面的确切数据以添加到下面的代码中。
请帮忙。
下面是代码:
IF TIME < (20 * 60 * 60) THEN DO:
ASSIGN StartDDT = dt_tm2dec(DATE(TODAY), 0)
EndDDT = dt_tm2dec(DATE(TODAY),19 * 60 * 60 + 59 * 60 + 59).
END.
ELSE DO:
ASSIGN StartDDT = dt_tm2dec(DATE(TODAY),20 * 60 * 60).
EndDDT = dt_tm2dec(DATE(TODAY + 1),07 * 60 * 60 + 59 * 60 + 59).
END.
您指定的条件可以写成:
if ( time >= ( 8 * 60 * 60 )) and ( time < ( 20 * 60 * 60 )) then
do:
message "first shift".
end.
else
do:
message "second shift".
end.
您可以使用 DATETIME
数据类型来获得毫秒级的时间精度。使用 DATETIME
函数构建轮班时间,然后将您的时间与它们进行比较。 NOW
函数为您提供精确到毫秒的当前时间:
DEFINE VARIABLE dtShift1 AS DATETIME NO-UNDO.
DEFINE VARIABLE dtShift2 AS DATETIME NO-UNDO.
ASSIGN
dtShift1 = DATETIME(TODAY, (8 * 60 * 60 * 1000))
dtShift2 = DATETIME(TODAY, (20 * 60 * 60 * 1000)).
IF NOW >= dtShift1 AND NOW < dtShift2 THEN
MESSAGE "First shift" VIEW-AS ALERT-BOX INFORMATION.
ELSE
MESSAGE "Second shift" VIEW-AS ALERT-BOX INFORMATION.
您还可以通过在TODAY
上加一天来查看第二天的轮班时间:
dtShift1 = DATETIME(TODAY + 1, (8 * 60 * 60 * 1000))
如果您需要处理不同的时区,请使用 DATETIME-TZ
数据类型。
我想在代码中插入 2 个轮班时间。
- (第一班) 轮班从 8:00:00:000 开始到 19:59:59:999
- (二班) 班次从 20:00:00:000 开始到第二天 7:59:59:999
我需要获取上面的确切数据以添加到下面的代码中。 请帮忙。 下面是代码:
IF TIME < (20 * 60 * 60) THEN DO:
ASSIGN StartDDT = dt_tm2dec(DATE(TODAY), 0)
EndDDT = dt_tm2dec(DATE(TODAY),19 * 60 * 60 + 59 * 60 + 59).
END.
ELSE DO:
ASSIGN StartDDT = dt_tm2dec(DATE(TODAY),20 * 60 * 60).
EndDDT = dt_tm2dec(DATE(TODAY + 1),07 * 60 * 60 + 59 * 60 + 59).
END.
您指定的条件可以写成:
if ( time >= ( 8 * 60 * 60 )) and ( time < ( 20 * 60 * 60 )) then
do:
message "first shift".
end.
else
do:
message "second shift".
end.
您可以使用 DATETIME
数据类型来获得毫秒级的时间精度。使用 DATETIME
函数构建轮班时间,然后将您的时间与它们进行比较。 NOW
函数为您提供精确到毫秒的当前时间:
DEFINE VARIABLE dtShift1 AS DATETIME NO-UNDO.
DEFINE VARIABLE dtShift2 AS DATETIME NO-UNDO.
ASSIGN
dtShift1 = DATETIME(TODAY, (8 * 60 * 60 * 1000))
dtShift2 = DATETIME(TODAY, (20 * 60 * 60 * 1000)).
IF NOW >= dtShift1 AND NOW < dtShift2 THEN
MESSAGE "First shift" VIEW-AS ALERT-BOX INFORMATION.
ELSE
MESSAGE "Second shift" VIEW-AS ALERT-BOX INFORMATION.
您还可以通过在TODAY
上加一天来查看第二天的轮班时间:
dtShift1 = DATETIME(TODAY + 1, (8 * 60 * 60 * 1000))
如果您需要处理不同的时区,请使用 DATETIME-TZ
数据类型。