我在winCC的系统信息中建立一个日期变量和时间变量。可是日期格式没有我所需要的,我想将日期格式转换为YYYY-MM-DD。通过修改控制面板的日期格式没有效果。通过C脚本想将日期值取出去后,和时间变量构成一个日期时间格式,日期和时间之间用空格隔开。但用遍了C的字符串函数也没有实现,请教高手如何实现。我想要的是C脚本或不便携代码的方法,不考虑通过VB脚本实现的方法。
问题补充:
我想得到的是如何将系统信息的日期格式转换为我需要的格式。即由MM-DD-YYYY转换为YYYY-MM-DD格式,使用除VB脚本以外的方法,如C脚本或其它方法。满的方式通过C的sprintf函数可以转换为字符串格式,但这不是我需要的。
产品版区:SIMATIC WinCC
悬赏分:5 | 解决时间:2009-04-20 15:44:51 | 提问者: kkz - 中级技术员  第6级
最佳答案
#define GetObject GetObject
char*szStr = "4-16-2009"; //MM-DD-YYYY
__object* pRegExp;
char szRet[255];
sprintf(szRet,"%s",szStr);
pRegExp=__object_create("VBScript.RegExp");
pRegExp->Global = TRUE;
pRegExp->IgnoreCase=TRUE;
pRegExp->Pattern = "([0-9].*)-([0-9].*)-([0-9].*)";
if ((int)pRegExp->Test(szRet)==-1)
{
sprintf(szRet,"%s",(char*)pRegExp->Replace(szRet,"$3-$1-$2"));
}
__object_delete(pRegExp);
printf("\r\n%s",szRet);
回答者:
dcount107
-
顶级工程师  第12级
2009-04-17 09:55:55
提问者对于答案的评价:
很特别的方法,学习啦。
Dim dstr
dstr = FormatDateTime(Date)
Dim tagtime
Set tagtime=HMIRuntime.Tags("todaytime")
tagtime.Value = dstr
tagtime.Write
End Function
todaytime是wincc变量,格式为16位文本变量
在变量管理里面添加系统通道,建立无符号16位数变量,选择变量为日年、月、日,然后这个变量可以在画面中用三个一i/o域显示出来。
问题补充:
1.为什么使用除VB脚本以外的方法?
2.我的方法不是通过C的sprintf函数转换,而是变量管理里面--添加系统通道---直接建三个无符号16位数变量--系统变量函数选为年、月、日--对应连接三个输入输出域显示出来。
回答者: 满 - 顶级工程师  第12级
2009-04-16 20:42:33
时间显示在文本框
#include "apdefap.h"
char* _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code("kernel32.dll")
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code()
SYSTEMTIME sysTime;
char szTime[20]="";
GetLocalTime(&sysTime);
sprintf(szTime,"%04d-%02d-%02d",sysTime.wYear,sysTime.wMonth,sysTime.wDay);//,"%04d-%02d-%02d这就是你所谓的XXXX-XX-XX的形式啊
return szTime;
}
回答者: 飞扬的雨滴 - 初级技术员  第5级
2009-04-17 16:14:00
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!