STM32/STM8技术论坛

电脑杂谈  发布时间:2019-10-01 05:02:56  来源:网络整理

战神一号程序麻将机_产品成本的一般核算程序_stm32万年历程序流程图

0

#include<stdio.h>

typedef unsignedint uint;//输入时间月份与年份都应该减1,输出的一月与年份都应该加1

typedef unsignedlong int ulint;

uint a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};

uint b[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};

uint count=10000;//记录计数器的值,从0开始

uint run_ping(uint year)//判断是闰年还是平年,返回1是闰年,返回0是平年

{ uint i;

IF(year%4==0)//判断如何被4整除

{

if(year0==0)//判断如何被100整除

{

if(year%400==0)//判断如何被400整除

{

i=1;

}

else

{

i=0;

stm32万年历程序流程图_战神一号程序麻将机_产品成本的一般核算程序

}

}

else

{

i=1;

}

}

else

{

i=0;

}

return i;

}

ulint set_time(uint year,uint month,uint day,uint hour,uint min,uint second)//设置当前计数器的初值

{

ulint sec=0,i=0,x=0;

if(run_ping(year))//判断是平年还是闰年

{

for(i=1;i<month;i++)//闰年

{

产品成本的一般核算程序_stm32万年历程序流程图_战神一号程序麻将机

sec+=(a*86400);//当前月份的总时间

}

sec=366*(year-1)*86400+sec+day*86400+hour*3600+min*60+second;//初始化的时间化成秒,化简成计数器的初始值,当前季度12则实际只有11个月完整,第12月没过

}

else

{

for(i=1;i<month;i++)//平年月份值化成总秒

{

sec+=(a*86400);//如果超过2月份的话,就多加了一夜

}

if(month>2)//因为平年的2月28天

{

sec=365*(year-1)*86400+sec+day*86400+hour*3600+min*60+second;//多加了三天需要得减去。

}

else

{

sec=365*(year-1)*86400+sec+day*86400+hour*3600+min*60+second;//没有过2月不用减去多去的每天,年月日时分秒

}

}

return sec;

战神一号程序麻将机_stm32万年历程序流程图_产品成本的一般核算程序

}

ulint current_time(void)//开始当前的时间,一般在初始化一个变量的之后,一定要先赋值为0,否则也许发生预想不到的状况

{

ulint time=0,year=0,month=0,second=0,hour=0,min=0,i=0,day=0;

long int day_month=0;

time=set_time(130,5,20,12,0,0)+count;//当前的时间总秒,年份不能太长或许高于数据长度,

if(run_ping(18))

{

year=time/86400/366;//输出时year需要加1,获取年份,一天86400s

day_month=time/86400%366;//月份加天数

do

{

day_month-=a[++i];

}while(day_month>0);

month=i;//获取当前的月份

day=day_month+a;//获取日期

}

else

{

year=time/86400/365;//输出时year需要加1stm32万年历程序流程图stm32万年历程序流程图,获取年份,time/86400代表小数天数,求余代表小时加秒数

战神一号程序麻将机_产品成本的一般核算程序_stm32万年历程序流程图

day_month=time/86400%365;//月份加天数

do

{

day_month-=b[++i];

}while(day_month>0);

month=i;//获取当前的月份

day=day_month+a;//获取日期

}

hour=time%86400/3600;//当前的小时

min =time%86400%3600/60;//分钟数

second=time%86400%3600%60;//秒数

return year+1;//时分秒正确,数据长度问题,数据有无符号问题

}

void main(void)

{

ulint dat1;

dat1=current_time();

//dat1=set_time(1,2,1,1,0,10);

printf("%d",dat1);

}

2


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-124736-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...