【建议收藏】CodeSys中如何获取当前系统时间并格式化?

该文章保姆级别 5行代码教会你在CodeSys系统里面获取当前时间,包括年月日,时分秒,学不会隔着网线来k我。

代码执行软件我用的是禾川的HCP编辑器,如果需要帮助可以dd,看到了会回复。

注意:

①如果只需要时间就只需要看标题2

②如果需要进阶获取信息就看标题3

目录

1、先看效果:

2、获取时间代码:

3、单独获取信息补充代码:

3.1效果:

3.2代码:


1、先看效果:

2、获取时间代码:

玩过codesys的都知道,变量区和代码区是分开的,不要C到一坨了,如果下面的代码CV都不会,回家吧孩子。

//变量区
    错误代码: SysTimeRtc.RTS_IEC_RESULT;
	UTC实时时间戳: DWORD;
	北京时间时间戳: DWORD;
	时间解析: DATE_AND_TIME;
	时间解析字符串: STRING;
	当前时间格式化: STRING(255);

————————————————————————————————————————————————————————————————————
//代码区:
//1、获取UTC时间戳(精确到秒)
	//输入参数:是为了接收函数执行时的错误信息(0表示没错误)
	//输出参数:是UTC时间戳
UTC实时时间戳 := SysTimeRtcGet(错误代码);

//2、将UTC时间戳转换为北京时间戳【一定要这一步,不然差好几个小时】
	//输入参数1:UTC时间戳
	//输出参数2:接收转换后的时间戳参数
	//输出参数:是为了接收函数执行时的错误代码
错误代码 := SysTimeRtcConvertUtcToLocal(UTC实时时间戳, 北京时间时间戳);

//3、将时间戳 转为 人看得懂格式:转换后的格式是:DT#2025-5-11-22:20:4
	//输入参数:需要转换的时间戳
	//返回参数:转换后的信息
时间解析 := UDINT_TO_DT(北京时间时间戳);

//4、转换成字符串
时间解析字符串:=TO_STRING(时间解析);

//5、通过 REPLACE 将字符串中的不必要的东西替换掉 替换后: '2025-05-11-22:22:44'
	//STR1:源字符串
	//STR2:修改的内容
	//P=1从第一个字符开始
	//L=3是长度=3
当前时间格式化:=REPLACE(STR1:=时间解析字符串,STR2:='',L:=3,P:=1);

3、单独获取信息补充代码:

如果你还想单独获取到每一个信息的话,你可以参考下面的代码:

3.1效果:

3.2代码:

//变量区:
	毫秒时间戳: SysTimeRtc.SYSTIME;
	时间具体解析: SysTimeRtc.SYSTIMEDATE;
	当前年: UINT;
	当前月: UINT;
	当前日: UINT;
	当前时: UINT;
	当前分: UINT;
	当前秒: UINT;
	当前星期几: UINT;
	当前今年第几天: UINT;
	当前毫秒: UINT;

	aaa: DWORD;
	bbb: DWORD;
	ccc: DATE_AND_TIME;
	ddd: STRING;
	eee: STRING(255);
______________________________________________________________
//代码区:
    //1、获取UTC时间戳(精确到毫秒)
    SysTimeRtcHighResGet(毫秒时间戳);

    //2、通过该方法进行转换
    	//参数1:是UTC时间戳
    	//参数2:是转换后的结构体变量
    SysTimeRtcConvertHighResToLocal(毫秒时间戳, 时间具体解析);

    //3、可以对结构体里面的独立变量取出来
    当前年:=时间具体解析.wYear;
    当前月:=时间具体解析.wMonth;
    当前日:=时间具体解析.wDay;
    当前时:=时间具体解析.wHour;
    当前分:=时间具体解析.wMinute;
    当前秒:=时间具体解析.wSecond;
    当前星期几:=时间具体解析.wDayOfWeek;
    当前今年第几天:=时间具体解析.wYday;
    当前毫秒:=时间具体解析.wMilliseconds;


//如果不仅仅想在这里获取到单独的,也想获取到一个格式化好的字符串,那么就加上下面的代码
//毫秒/1000就是秒,转为DWORD
aaa:=TO_DWORD(毫秒时间戳/1000);
SysTimeRtcConvertUtcToLocal(aaa,bbb);
ccc := UDINT_TO_DT(bbb);
ddd:=TO_STRING(ccc);
eee:=REPLACE(STR1:=ddd,STR2:='',L:=3,P:=1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值