获取当前时间的前一天

我现在要做一个自动打印报表的功能,每次自动打的都是一天的数据,也即当前时间的前一天到当前时间的这段时间的数据。获取当前时间我知道可以通过在变量管理里面建立系统信息,然后获取年、月、日、小时、分钟、秒,这些信息,但是我如何获得当前日的前一日呢,直接减一肯定是不行的。因为要考虑到闰年,每个月的天数也不同,可否直接调用什么函数可以来计算呢
 我的脚本如下:
 SYSTEMTIME From()
 { 
  #pragma code("kernel32.dll")
 VOID GetLocalTime(LPSYSTEMTIME lpSytemTime);
 #pragma code()
    SYSTEMTIME st;
    st.wYear=GetTagWord("year");
    st.wMonth=GetTagWord("month");
    st.wDay=GetTagWord("day");
    st.wHour=GetTagWord("hour");
    st.wMinute=GetTagWord("minute");
    st.wSecond=GetTagWord("second");
 return st;

 }

 SYSTEMTIME To()
 { 
     #pragma code("kernel32.dll")
    VOID GetLocalTime(LPSYSTEMTIME lpSytemTime);
    #pragma code()
   SYSTEMTIME st;
    st.wYear=GetTagWord("year");
    st.wMonth=GetTagWord("month");
    st.wDay=GetTagWord("day")-1;
    st.wHour=GetTagWord("hour");
    st.wMinute=GetTagWord("minute");
    st.wSecond=GetTagWord("second");
 return st;

 }

 希望大家能给我帮助,非常感谢!

最佳答案

C脚本处理日期的确是个麻烦事哦,呵呵。帮你改造一下:
 SYSTEMTIME From()
 { 
 #pragma code("kernel32.dll")
 VOID GetLocalTime(LPSYSTEMTIME lpSytemTime);
 #pragma code()
 SYSTEMTIME st;
 GetLocalTime(&st);
 return st;
 }

 SYSTEMTIME To()
 { 
 //**********************************
 typedef struct 
 {
 int tmsec;
 int tmmin;
 int tmhour;
 int tmmday;
 int tmmon;
 int tmyear;
 int tmwday;
 int tmyday;
 int tmisdst;
 }tm;
 //**********************************
 SYSTEMTIME st;
 time_t   yest;
 tm *tm1;
 yest   =   time(NULL)  -  (time_t)(60*60*24); 
 tm1 = gmtime(&yest);
 st.wYear=tm1->tmyear;
 st.wMonth=tm1->tmmon;
 st.wDay=tm1->tmmday;
 st.wHour=tm1->tmhour;
 st.wMinute=tm1->tmmin;
 st.wSecond=tm1->tmsec;
 return st;
 }

 另外如果是想做动态时间报表打印的话,对于WinCC V6.0 SP3版本起用不着这么麻烦,WinCC支持用变量进行动态化,脚本只需要控制变量就可以实现动态打印,VBS脚本就派上用场了,呵呵。详情请参考:
 WinCC 信息系统>>使用WinCC>>创建页面布局>>使用对象>>使用运行系统文档的对象>>如何改变“变量记录表”的输出选项
 

提问者对于答案的评价:
其实大家说得都很好!非常感谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc271040.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 上午8:02
下一篇 2019年6月11日 上午8:02

相关推荐