合信论坛

快捷导航
查看: 5658|回复: 0

使用CF块写的计算N天后日期例程

[复制链接]

15

主题

15

帖子

944

积分

高级会员

Rank: 3Rank: 3

积分
944
发表于 2022-12-14 17:31:36 | 显示全部楼层 |阅读模式
基本思路:使用反复累加的方法将输入的天数增加到起始日期,将每月的天数放到数组中进行比较,同时判断运行时的年份是否为闰年从而确定2月的天数更改数组中的2月份天数。
运行效果如下,此程序可直接应用于分期分期付款作为天数判断。
图片3.png 运行效果如下。

图片4.png


源代码如下

#include "math.h"
#include "stdio.h"
#include "plc200.h"

FP32 mon[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };                                   //把每月的天数记录到数组中,其中数组的0号在此没有实际意义直接用0填充

void CF_1( U16 s_year, U16 s_month, U16 s_day, U16 day, U16 *e_year, U16 *e_month, U16 *e_day)
{
          if ((s_year % 4 == 0 && s_year % 100 != 0) || s_year % 400 ==0)                  //判断初年是否是闰年
                {
                        mon[2] = 29 ;
                }
        else
                        mon[2] = 28;
        U16 tmp_y = s_year;
        U16 tmp_m = s_month;
        U16 tmp_d = s_day;
        for ( int i = 1; i <= day; i++)
                {
                        tmp_d += 1;                                                                //通过不断的累加天数去加到结束日期
                        if (tmp_d > mon[tmp_m])                                           //累加到本月最大天数月数加1,日数到1
                                {
                                        tmp_d = 1;
                                        tmp_m++;
                                        if (tmp_m > 12)                                                 //月数超过12月年数进1,月初到1
                                                {
                                                        tmp_y++;
                                                        tmp_m = 1;
                                                        if ((tmp_y % 4 == 0 && tmp_y % 100 != 0) || tmp_y % 400 ==0)        //判断新的一年是否是闰年
                                                                {
                                                                        mon[2] = 29 ;
                                                                }
                                                        else
                                                                        mon[2] = 28;
                                                }
                                        }
                                }
                       
        setU16(e_year,tmp_y);
        setU16(e_month,tmp_m);
        setU16(e_day,tmp_d);

}




Project1.zip

12.52 KB, 下载次数: 1310

程序案例

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

本版积分规则

客服热线
400-700-4858 周一至周五:09:00 - 18:00
深圳市南山区打石一路深圳国际创新谷6栋A座9层

深圳市合信自动化技术有限公司(简称“合信技术”)成立于2003年,高新技术企业,专注于工业自动化产品的研发、生产、销售和技术服务,依靠高质量、高性能的自动化控制产品与方案为客户创造最大价值,立志于成为全球领先的工业自动化解决方案供应商。

Archiver|手机版|小黑屋|COTRUST Inc. ( 粤ICP备13051915号 )

GMT+8, 2024-12-27 08:34 , Processed in 0.147302 second(s), 26 queries .

快速回复 返回顶部 返回列表