200smat设定一个日期与系统实时日期怎么进行运算,得出相差天数.

主要考虑怎么解决月大月小,还有月底和月初的问题.

钻石用户推荐最佳答案

//计算两个年份之间的天数。只计算完整一年这部分。
//基本好像可以。。。。。
if year1+1>=year2 then    //没有完整的一年,不参与计算
else
 for i=year1+1 to year2-1
  if i%4==0 then
   sum=sum+366    //闰年算366日
  else
   sum=sum+365    //平年算365日
  end if
 next i
end if
//计算两个月份之间的天数
if (year1==year2)&(month1+1>=month2) then   //年相同,月之间没有完整月,就不需要计算什么。
else     //否则就出现后面两种情况……
 if year1==year2 then   //这是第一种情况,年相等,直接计算。
  if year1%4==0 then   //闰年了
   mon[1]=29
  else
   mon[1]=28
  end if
  for i=month1 to month2-2 //从当前月的下一个月起,累加,到结束之前的一个月。
  sum=sum+mon[i] 
  next i
 else       //这是第二种情况,年不相等,分两段计算月。
  
  //1 2 3 4 5 6 7 8 9 10 11 12
  //1 2 3 4 5 6 7 8 9 10 11 12
  if month1<>12 then   //计算前段不足一年的月数的天数。
   if year1%4==0 then   //闰年了
    mon[1]=29
   else
    mon[1]=28
   end if
   for i=month1 to 11
    sum=sum+mon[i]
   next i
  end if
  if month2<>1 then   //计算后段不足一年的月数的天数。
   if year2%4==0 then   //闰年了
    mon[1]=29
   else
    mon[1]=28
   end if
   for i=0 to month2-2
    sum=sum+mon[i]
   next i
  end if
 end if
end if
//计算两个日期之间的天数
if (year1==year2)&(month1==month2) then
 sum=day2-day1
else
 if year1%4==0 then
  mon[1]=29 
 else
  mon[1]=28
 end if
 i=month1-1
 sum=mon[i]-day1+day2+sum
end if

你不需要看代码,只需要看文字解释就可以大概地了解这个计算日子的过程。就要这么多的过程。

提问者对于答案的评价:

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 下午4:20
下一篇 2021年7月5日 下午4:20

相关推荐

  • 200自由口通信关于接受与发送的同时进行

    我想问下 RCV指令在上一次接收完毕,再一次激活后(一次接受完成后是不是再需要一个边沿信号来激活RCV指令?还是只需要激活一次?),但是还处于接收等待状态的时候(即起始条…

    SIMATIC S7-200 2017年12月2日
  • EM223地址定义

    CPU224自带的I0.0-I0.7,I1.0-I1.5扩展模块EM223选16DI/16DO的,那么假如扩展模块后是自动生成I2.0-I2.7和I3.0-I3.7么 &…

    SIMATIC S7-200 2020年11月1日
  • 求救!!S7 200断电后参数为零

    我们使用的S7 200的在使用中,断电后,原先设置的参数全部变为零了,重新设置后又可以正常使用。请问:“是哪个地方出了问题”,盼复,谢谢! 最佳答案 我不知道你所说参数是…

    SIMATIC S7-200 2021年7月5日
  • 通信连接问题

    用200PLC与台达变频器进行通信,通信接口如果自己做是否可行?     两个通信口都是RS485的,所以自己做通信电缆:3—…

    SIMATIC S7-200 2021年7月5日
  • 禁止中断 输出点依旧输出 求高手帮忙!!!

    1、主程序中强制I0.2禁止中断,   输出点依旧输出2、在中断程序中,强制I0.1,中断返回,Q0.1依旧输出求高手帮忙!!! 问题补充:我在分离、…

    2021年7月5日
  • 第一次扫描标志

    什么是第一次扫描标志,它的作用是什么? 问题补充:“在RUN模式下编辑不影响第一次扫描标志位”是不是就是说不影响SM0.1这一位啊?是不是在程序中不能改变改位的值啊? 最佳答案 P…

    SIMATIC S7-200 2021年7月5日
  • 200 SMART,

    各位好,有两个问题需要请教一下,1、我组态SMART时,我把硬件组态好,然后就下载下去,然后所有的模块都报错闪红灯(注:硬件组态都是对的),2、200 SMART&nbs…

    SIMATIC S7-200 2018年12月9日
  • 跳转指令和顺控继电器的使用区别

    跳转指令和顺控继电器的使用本质有什么区别 最佳答案 1、跳转指令很干净,被跳过部分决不会产生任何(副)作用;2、SCR指令很奇妙,说好不行执行的,其实还是在执行(扫描),极个别特例…

    SIMATIC S7-200 2020年11月5日
  • 西门子PLC编程软件V2。2

    求下载地址 钻石用户推荐最佳答案 STEP 7 Micro/WIN SMART V2.3 完整版http://w2.siemens…

    SIMATIC S7-200 2021年7月5日
  • S7-200 I/O扩展电缆可以自己做吗?

    现场要求加个模块,但是空间不够了,需要重新配根I/O扩展电缆,不知可以临时自己做一根使用不?型号:6ES7 290-6AA20-0XA0  &nbsp…

    SIMATIC S7-200 2020年10月31日

发表回复

登录后才能评论