iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言标准时间与秒单位怎么相互转换
  • 459
分享到

C语言标准时间与秒单位怎么相互转换

2023-06-30 13:06:08 459人浏览 泡泡鱼
摘要

今天小编给大家分享一下C语言标准时间与秒单位怎么相互转换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 时间转换-秒与标

今天小编给大家分享一下C语言标准时间与秒单位怎么相互转换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1. 时间转换-秒与标准时间的转换

时间转换(秒与标准时间的转换)
(1)函数1: 将秒单位时间转为标准时间。 --RTC实时时钟—>秒为单位—>每秒钟cnt++;
237562867493 -----xxxx年xx月xx日xx时xx分xx秒 星期x。

示例代码: (模拟电子钟)

#include <stdio.h>#include <string.h>  //字符串处理#include <windows.h> //时间单位int year,mon,mdeay,hour,min,t_sec;//闰年的月份int mon_r[12]={31,29,31,30,31,30,31,31,30,31,30,31};//平年的月份int mon_p[12]={31,28,31,30,31,30,31,31,30,31,30,31};unsigned int TimeToSec(int year,int mon,int mdeay,int hour,int min,int sec);void SecToTime(unsigned int sec);int main(void){//将标准时间转为秒单位时间  (设置时间)unsigned int time=TimeToSec(2018,6,6,16,40,20);while(1){time++;Sleep(1000); //睡眠1秒时间。 单位是msSecToTime(time);printf("%d-%d-%d %d:%d:%d\n",year,mon,mdeay,hour,min,t_sec);}return 0;}int GetYearStat(int year){if((year%4==0&&year%100!=0)||year%400==0)return 1; //闰年return 0; //平年}void SecToTime(unsigned int sec){int i;year=1970; //基准年份while(sec>=365*24*60*60) //秒还够一年{if(GetYearStat(year)) //闰年{if(sec>366*24*60*60){sec-=366*24*60*60; //减去一年year++; //年份累加}else{break;}}else{sec-=365*24*60*60; //减去一年year++; //年份累加}}mon=1;if(GetYearStat(year)) //闰年{for(i=0; i<12; i++){if(sec>=mon_r[i]*24*60*60) //够一个月{sec-=mon_r[i]*24*60*60; //减去一个月mon++;//增加一个月}else break;}}else{for(i=0; i<12; i++){if(sec>=mon_p[i]*24*60*60) //够一个月{sec-=mon_p[i]*24*60*60; //减去一个月mon++;//增加一个月}else break;}}mdeay=1;while(sec>=24*60*60) //判断是否够一天{sec-=24*60*60;mdeay++;}hour=0;while(sec>=60*60){sec-=60*60;hour++;}min=0;while(sec>=60){sec-=60;min++;}t_sec=sec; }unsigned int TimeToSec(int year,int mon,int mdeay,int hour,int min,int sec){int i;int sec_cnt=0; //记录秒单位的时间for(i=1970; i<year; i++){if(GetYearStat(i)) //闰年{sec_cnt+=366*24*60*60;}else{sec_cnt+=365*24*60*60;}}for(i=0; i<mon-1; i++){if(GetYearStat(year)) //闰年{sec_cnt+=mon_r[i]*24*60*60;}else{sec_cnt+=mon_p[i]*24*60*60;}}sec_cnt+=(mdeay-1)*24*60*60;sec_cnt+=hour*60*60;sec_cnt+=min*60;sec_cnt+=sec;return sec_cnt; //返回秒单位时间}

完整的代码(添加星期):

#include <stdio.h>#include <string.h>  //字符串处理#include <Windows.h> //时间单位int year,mon,mdeay,hour,min,t_sec,week;//闰年的月份int mon_r[12]={31,29,31,30,31,30,31,31,30,31,30,31};//平年的月份int mon_p[12]={31,28,31,30,31,30,31,31,30,31,30,31};unsigned int TimeToSec(int year,int mon,int mdeay,int hour,int min,int sec);void SecToTime(unsigned int sec);int GetWeek(unsigned int sec);int main(void){    //将标准时间转为秒单位时间  (设置时间)    unsigned int time=TimeToSec(2018,9,1,16,40,20);    while(1)    {        time++;        Sleep(1000); //睡眠1秒时间。 单位是ms        SecToTime(time);        week=GetWeek(time); //获取星期        printf("%d-%d-%d %d:%d:%d 星期%d\n",year,mon,mdeay,hour,min,t_sec,week);    }    return 0;}int GetYearStat(int year){    if((year%4==0&&year%100!=0)||year%400==0)return 1; //闰年    return 0; //平年}void SecToTime(unsigned int sec){    int i;    year=1970; //基准年份        while(sec>=365*24*60*60) //秒还够一年    {        if(GetYearStat(year)) //闰年        {            if(sec>366*24*60*60)            {                sec-=366*24*60*60; //减去一年                year++; //年份累加            }            else            {                break;            }        }        else        {            sec-=365*24*60*60; //减去一年            year++; //年份累加        }    }        mon=1;    if(GetYearStat(year)) //闰年    {        for(i=0; i<12; i++)        {            if(sec>=mon_r[i]*24*60*60) //够一个月            {                sec-=mon_r[i]*24*60*60; //减去一个月                mon++;//增加一个月            }            else break;        }    }    else    {        for(i=0; i<12; i++)        {            if(sec>=mon_p[i]*24*60*60) //够一个月            {                sec-=mon_p[i]*24*60*60; //减去一个月                mon++;//增加一个月            }            else break;        }    }            mdeay=1;    while(sec>=24*60*60) //判断是否够一天    {        sec-=24*60*60;        mdeay++;    }        hour=0;    while(sec>=60*60)    {        sec-=60*60;        hour++;    }        min=0;    while(sec>=60)    {        sec-=60;        min++;    }        t_sec=sec; }

2. 时间转换-标准时间转秒

(2)函数2: 将标准时间转为秒单位的时间。
2018年6月1日19点41分23秒----------xxxxxxx秒
闰年366,平年365。 区分: 每年二月份相差一天.
标准时间基准点: 1970年1月1日0时0分0秒。

unsigned int TimeToSec(int year,int mon,int mdeay,int hour,int min,int sec){int i;int sec_cnt=0; //记录秒单位的时间for(i=1970; i<year; i++){if(GetYearStat(i)) //闰年{sec_cnt+=366*24*60*60;}else{sec_cnt+=365*24*60*60;}}for(i=0; i<mon-1; i++){if(GetYearStat(year)) //闰年{sec_cnt+=mon_r[i]*24*60*60;}else{sec_cnt+=mon_p[i]*24*60*60;}}sec_cnt+=(mdeay-1)*24*60*60;sec_cnt+=hour*60*60;sec_cnt+=min*60;sec_cnt+=sec;return sec_cnt;}int GetWeek(unsigned int sec){int mdeay=sec/60/60/24; //将秒单位时间转为天数switch(mdeay%7){case 0: //星期4return 4;break;case 1://星期5return 5;break;case 2: //星期6return 6;break;case 3://星期天return 7;break;case 4://星期1return 1;break;case 5://星期2return 2;break;case 6: //星期3return 3;break;default:break;}}

以上就是“C语言标准时间与秒单位怎么相互转换”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网其他教程频道。

--结束END--

本文标题: C语言标准时间与秒单位怎么相互转换

本文链接: https://www.lsjlt.com/news/329243.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c语言怎么计算字符串长度
    在C语言中,可以使用内置的strlen()函数来计算字符串的长度。该函数位于string.h头文件中。以下是一个示例代码: #inc...
    99+
    2024-05-14
    c语言
  • c语言怎么判断三个数的大小
    可以通过比较三个数之间的大小关系来判断它们的大小。以下是一个示例代码: #include <stdio.h> int ...
    99+
    2024-05-14
    c语言
  • c++排序函数sort怎么使用
    在C++中,使用sort函数对容器中的元素进行排序,可以按照默认的升序排列,也可以自定义排序规则。 下面是一个简单的例子,对一个ve...
    99+
    2024-05-14
    c++
  • c++中string的compare函数怎么使用
    在C++中,可以使用string的compare函数来比较两个string对象的大小。该函数的原型如下: int compare(c...
    99+
    2024-05-14
    c++
  • c++中string的compare函数有什么用
    c++中string的compare函数用于比较两个字符串的大小关系。该函数返回一个整数值,表示两个字符串的比较结果。 具体来说,如...
    99+
    2024-05-14
    c++
  • c++中print函数的功能有哪些
    在C++中,通常使用std::cout来进行输出操作,而不是使用print函数。std::cout是C++标准库中的一个输出流对象,...
    99+
    2024-05-14
    c++
  • c语言数据结构怎么使用
    在C语言中,数据结构可以通过定义结构体来实现。以下是一些常见的数据结构的使用方法示例: 链表: #include <std...
    99+
    2024-05-14
    c语言
  • c++中print函数的用法是什么
    在C++中没有内置的print函数,但可以使用cout来输出内容到控制台。cout是C++标准库中的一个输出流对象,可以使用<...
    99+
    2024-05-14
    c++
  • c++中concept的用法是什么
    在C++20中,Concept是一种新的语言特性,用于定义类型要求和约束。Concept可以被用来约束函数模板、类模板和普通函数的参...
    99+
    2024-05-14
    c++
  • c++中concept的作用是什么
    在C++中,concept的作用是定义一种通用的约束,用于限制模板参数的类型范围。通过使用concept,可以在编译时对模板参数进行...
    99+
    2024-05-14
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作