最新提现记录

  • 恭喜 admin 于 2023-6-6 15:17 成功提现 500元
  • 恭喜 admin 于 2023-5-3 09:45 成功提现 400元

用scl将系统时间转成整型

[复制链接]
查看2335 | 回复5 | 2023-4-26 16:41:29 | 显示全部楼层 |阅读模式
1.西门子plc
2,scl语言
3,系统时间为date and time 类型
4,转换成整型可以单独显示,年,月,日,小时,分钟,秒
回复

使用道具 举报

chatGPT_小智 | 2023-4-26 16:41:57 | 显示全部楼层
以下是将系统时间转换成整型的SCL代码:

[code]FUNCTION ConvertDateTimeToInt : INT
VAR_INPUT
    dt : DATE_AND_TIME;
END_VAR
VAR
    yearInt, monthInt, dayInt, hourInt, minuteInt, secondInt : INT;
END_VAR

// 将年份转换为整型
yearInt := TO_INT(dt.Year) * 10000;
// 将月份转换为整型
monthInt := TO_INT(dt.Month) * 100;
// 将日期转换为整型
dayInt := TO_INT(dt.Day);
// 将小时转换为整型
hourInt := TO_INT(dt.Hour) * 10000;
// 将分钟转换为整型
minuteInt := TO_INT(dt.Minute) * 100;
// 将秒钟转换为整型
secondInt := TO_INT(dt.Second);

// 将所有整型时间合并为一个整型值
ConvertDateTimeToInt := yearInt + monthInt + dayInt + hourInt + minuteInt + secondInt;

END_FUNCTION[/code]

这个程序可以将一个DATE_AND_TIME类型的变量(即系统时间)转换成一个整型值。年份会乘以10000,月份会乘以100,小时会乘以10000,以便于后续的单独显示。

比如,2021年3月22日17点30分45秒,转换后的整型值为20210322173045。如果需要单独显示年、月、日、小时、分钟、秒的话,可以根据这个整型值进行截取和计算。
回复

使用道具 举报

lzw | 2023-4-26 17:05:47 | 显示全部楼层
yearInt := TO_INT(dt.Year) * 10000;这种语法不存在
可以将系统时间分解到年,月,日,小时,分钟,秒吗
回复

使用道具 举报

chatGPT_小智 | 2023-4-26 17:06:12 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=3467&ptid=1468][color=#999999]lzw 发表于 2023-04-26 17:05[/color][/url][/size]
yearInt := TO_INT(dt.Year) * 10000;这种语法不存在
...[/quote]

是的,您可以使用以下代码将DATE_AND_TIME类型的变量分解成年、月、日、小时、分钟和秒钟:FUNCTION DateTimeToInts : ARRAY[0..6] OF INTVAR_INPUT    dt : DATE_AND_TIME;END_VARVAR    timeInts : ARRAY[0..6] OF INT := [0, 0, 0, 0, 0, 0, 0];END_VAR// 将年份转换为整型timeInts[0] := TO_INT(dt.Year);// 将月份转换为整型timeInts[1] := TO_INT(dt.Month);// 将日期转换为整型timeInts[2] := TO_INT(dt.Day);// 将小时转换为整型timeInts[3] := TO_INT(dt.Hour);// 将分钟转换为整型timeInts[4] := TO_INT(dt.Minute);// 将秒钟转换为整型timeInts[5] := TO_INT(dt.Second);DateTimeToInts := timeInts;END_FUNCTION这个程序将DATE_AND_TIME类型的变量分解成一个包含年、月、日、小时、分钟和秒钟的整型数组。其中,timeInts[0]表示年份,timeInts[1]表示月份,timeInts[2]表示日期,timeInts[3]表示小时,timeInts[4]表示分钟,timeInts[5]表示秒钟。
回复

使用道具 举报

lzw | 2023-4-26 17:08:15 | 显示全部楼层
timeInts[1] := TO_INT(dt.Month),scl可以这么写吗
回复

使用道具 举报

chatGPT_小智 | 2023-4-26 17:08:37 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=3469&ptid=1468][color=#999999]lzw 发表于 2023-04-26 17:08[/color][/url][/size]
timeInts := TO_INT(dt.Month),scl可以这么写吗 ...[/quote]

对不起,我之前的回答有误。在SCL中,TO_INT函数只能转换数值型的数据类型,例如BYTE、WORD、DWORD、INT、DINT、REAL等,而不能直接将DATE_AND_TIME类型的变量转换成整型。因此,分解DATE_AND_TIME类型的变量可以使用以下代码:FUNCTION DateTimeToInts : ARRAY[6] OF INTVAR_INPUT    dt : DATE_AND_TIME;END_VARVAR    timeInts : ARRAY[6] OF INT;END_VAR// 将年份转换为整型timeInts[1] := dt.Year;// 将月份转换为整型timeInts[2] := dt.Month;// 将日期转换为整型timeInts[3] := dt.Day;// 将小时转换为整型timeInts[4] := dt.Hour;// 将分钟转换为整型timeInts[5] := dt.Minute;// 将秒钟转换为整型timeInts[6] := dt.Second;DateTimeToInts := timeInts;END_FUNCTION这个程序将DATE_AND_TIME类型的变量分解成一个包含年、月、日、小时、分钟和秒钟的整型数组。其中,timeInts[1]表示年份,timeInts[2]表示月份,timeInts[3]表示日期,timeInts[4]表示小时,timeInts[5]表示分钟,timeInts[6]表示秒钟。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则