如需转载请注明出处:https://juyou.blog.csdn.net/article/details/114646547

之前讲过了,参看: STM32开发 – UTC、UNIX时间戳、北京时间之间的转换
在Windows下稍微改了下。并且添加了,日期格式判断。

save_time.h

#include "windows.h"
#define xMINUTE   (60             ) //1分的秒数
#define xHOUR      (60*xMINUTE) //1小时的秒数
#define xDAY        (24*xHOUR   ) //1天的秒数
#define xYEAR       (365*xDAY   ) //1年的秒数unsigned int  xDate2Seconds(SYSTEMTIME *time);
void xSeconds2Date(unsigned long seconds, SYSTEMTIME *time );
int Judge_Date_Format(SYSTEMTIME time);
uint32_t  time_work_out(SYSTEMTIME start_time, SYSTEMTIME end_time);

save_time.c

#include "save_time.h"//将localtime(UTC+8北京时间)转为UNIX TIME,以1970年1月1日为起点
unsigned int  xDate2Seconds(SYSTEMTIME *time)
{static unsigned int  month[12]={/*01月*/xDAY*(0),/*02月*/xDAY*(31),/*03月*/xDAY*(31+28),/*04月*/xDAY*(31+28+31),/*05月*/xDAY*(31+28+31+30),/*06月*/xDAY*(31+28+31+30+31),/*07月*/xDAY*(31+28+31+30+31+30),/*08月*/xDAY*(31+28+31+30+31+30+31),/*09月*/xDAY*(31+28+31+30+31+30+31+31),/*10月*/xDAY*(31+28+31+30+31+30+31+31+30),/*11月*/xDAY*(31+28+31+30+31+30+31+31+30+31),/*12月*/xDAY*(31+28+31+30+31+30+31+31+30+31+30)};unsigned int  seconds = 0;unsigned int  year = 0;year = time->wYear-1970;       //不考虑2100年千年虫问题seconds = xYEAR*year + xDAY*((year+1)/4);  //前几年过去的秒数seconds += month[time->wMonth-1];      //加上今年本月过去的秒数if( (time->wMonth > 2) && (((year+2)%4)==0) )//2008年为闰年seconds += xDAY;            //闰年加1天秒数seconds += xDAY*(time->wDay-1);         //加上本天过去的秒数seconds += xHOUR*time->wHour;           //加上本小时过去的秒数seconds += xMINUTE*time->wMinute;       //加上本分钟过去的秒数seconds += time->wSecond;               //加上当前秒数<br> seconds -= 8 * xHOUR;seconds -= 8 * xHOUR;return seconds;
}//UNIX转为UTC 已进行时区转换 北京时间UTC+8
void xSeconds2Date(unsigned long seconds, SYSTEMTIME *time )
{static unsigned int month[12]={/*01月*/31, /*02月*/28, /*03月*/31, /*04月*/30, /*05月*/31, /*06月*/30, /*07月*/31, /*08月*/31, /*09月*/30, /*10月*/31, /*11月*/30, /*12月*/31 };unsigned int days; unsigned short leap_y_count; time->wSecond      = seconds % 60;//获得秒 seconds          /= 60; time->wMinute      =  seconds % 60;//获得分 seconds          += 8 * 60 ;        //时区矫正 转为UTC+8 bylzsseconds          /= 60; time->wHour        = seconds % 24;//获得时 days              = seconds / 24;//获得总天数 leap_y_count = (days + 365) / 1461;//过去了多少个闰年(4年一闰) if( ((days + 366) % 1461) == 0) {//闰年的最后1天 time->wYear = 1970 + (days / 366);//获得年 time->wMonth = 12;              //调整月 time->wDay = 31; return; } days -= leap_y_count; time->wYear = 1970 + (days / 365);     //获得年 days %= 365;                       //今年的第几天 days = 01 + days;                  //1日开始 if( (time->wYear % 4) == 0 ) { if(days > 60)--days;            //闰年调整 else { if(days == 60) { time->wMonth = 2; time->wDay = 29; return; } } } for(time->wMonth = 0;month[time->wMonth] < days;time->wMonth++) { days -= month[time->wMonth]; } ++time->wMonth;               //调整月 time->wDay = days;           //获得日
}//判断日期格式是否正确,正确返回1,格式错误返回-1,
int Judge_Date_Format(SYSTEMTIME time)
{if ((time.wYear < 1980) || (time.wYear > 3000) || (time.wHour > 23) || (time.wMinute > 59) || (time.wSecond > 59)){return -1;}if ((time.wMonth > 12) || (time.wMonth < 1)){return -1;}else{if ((time.wYear % 4 == 0) && (time.wYear % 100 != 0) || (time.wYear % 400 == 0)){if (time.wMonth == 2){if ((time.wDay > 29) || (time.wDay < 1)){return -2;}else{return 1;}}}if ((time.wMonth == 4) || (time.wMonth == 6) || (time.wMonth == 9) || (time.wMonth == 11)){if ((time.wDay < 1) || (time.wDay > 30)){return -2;}else{return 1;}}else if (time.wMonth != 2){if ((time.wDay < 1) || (time.wDay > 31)){return -2;}else{return 1;}}else{if ((time.wDay < 1) || (time.wDay > 28)){return -2;}else{return 1;}}}
}/*通讯时长*/
uint32_t  time_work_out(SYSTEMTIME start_time, SYSTEMTIME end_time)
{int32_t  t_time = 0;t_time = xDate2Seconds(&end_time) - xDate2Seconds(&start_time);if (t_time < 0){t_time = 0;}return t_time;
}

如需转载请注明出处:https://juyou.blog.csdn.net/article/details/114646547

DSP学习-- UTC转UNIX时间戳相关推荐

  1. STM32开发 -- UTC、UNIX时间戳、北京时间之间的转换

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/87637350 我碰到的问题,GPS上UTC时间转北京时间和STM32上UNI ...

  2. php utc时间_PHP转换UNIX时间戳 UTC时间(TZ格式) 标准时间的方法 UNIX UTC GMT时间、本地时间互转...

    在PHP编程中经常会遇到各种不同格式的时间 比如: unix时间戳:1547740800 UTC时间:2019-1-18T00:00:00Z 标准时间:2019-1-18 00:00:00 以上这三个 ...

  3. php时间戳转utc时间格式,PHP转换UNIX时间戳 UTC时间(TZ格式) 标准时间的方法 UNIX UTC GMT时间、本地时间互转...

    在PHP编程中经常会遇到各种不同格式的时间 比如: unix时间戳:1547740800 UTC时间:2019-1-18T00:00:00Z 标准时间:2019-1-18 00:00:00 以上这三个 ...

  4. UTC时间、GMT时间、本地时间、Unix时间戳的区别

    1.UTC时间 与 GMT时间 UTC时间的英文全称:Universal Time Coordinated,中文名称:协调世界时.俗的理解为,这个时间是全世界通用的,即全世界都公用的一个时间.可以认为 ...

  5. 时间:UTC时间、GMT时间、本地时间、Unix时间戳

    1.UTC时间 与 GMT时间 我们可以认为格林威治时间就是时间协调时间(GMT=UTC),格林威治时间和UTC时间均用秒数来计算的. 2.UTC时间 与 本地时 UTC + 时区差 = 本地时间 时 ...

  6. DSP学习 -- GPS时间校准电脑系统时间

    一.格林威治时间转北京时间 GPS时间为格林威治时间,而 北京时间=GMT时间+8小时. 两者转换的算法: 参看:C语言实现格林威治时间转北京时间 参看:STM32开发 – UTC.UNIX时间戳.北 ...

  7. php 把unix时间转换成时间,php unix时间戳转换成时间的方法

    php unix时间戳转换成时间的方法:首先创建一个PHP示例文件:然后通过"date('Y-m-d H:i:s', 1547740800);"方式将指定的unix时间戳转换成时间 ...

  8. 算法之unix时间戳和UTC时间(年月日)互换

    算法之unix时间戳和UTC时间(年月日)互换 author:onceday date:2022年6月8日 文章目录 算法之unix时间戳和UTC时间(年月日)互换 1.c标准库时间结构定义 2.自定 ...

  9. UTC时间、GMT时间、本地时间、Unix时间戳

    来源:https://www.cnblogs.com/xwdreamer/p/8761825.html GMT和UTC GMT,即格林尼治标准时间,也就是世界时.GMT的正午是指当太阳横穿格林尼治子午 ...

最新文章

  1. 一份非常详尽的 Objective-C 到 Swift 的迁移指南
  2. shell编程系列26--大型脚本工具开发实战
  3. C#.NET里面抽象类和接口有什么区别
  4. IOS 文件读取4种方法 转字符串 和data
  5. 适用于ActiveMQ 5.9的Apache Camel Broker组件
  6. java统计系统线程数_Java并发(八)计算线程池最佳线程数
  7. 系统间数据传输,产品经理视角的9千字总结:接口、otter、log4j、SFTP、MQ……...
  8. 传统动态代理实现计算器类日志功能
  9. 介绍 SQL Server 的安全配置
  10. 二代征信|番茄风控全网最全
  11. opencv查找边界_数据边界:查找差距,孤岛等
  12. pyton random 模块
  13. 通过Cadence学拉扎维的第1天-直流仿真、交流仿真、瞬态仿真和参数扫描(以上期共源为例)
  14. 网站死链检测的软件-网站死链检测的工具
  15. 六子棋计算机博弈关键技术研究,六子棋计算机博弈系统的研究与实现-计算机应用技术专业论文.docx...
  16. 音频压缩算法ALaw,uLaw
  17. 基于多进程架构的嵌入式软件框架研究与实现
  18. gitbook 入门教程之从零到壹发布自己的插件
  19. C专家编程 第11章 你懂得C,所以C++不再话下 11.1 初识OOP
  20. 元宇宙顶层设计预研项目探讨

热门文章

  1. golang第三方日志包seelog配置文件详解
  2. 5.intent_activity
  3. 百度地图 使用两条平行线表示路线
  4. Spring 事情具体详尽的解释
  5. Activity与Thread之间的通讯(old)
  6. MSSQL SERVER 2005 数学函数
  7. 吴恩达 coursera AI 第二课总结+作业答案
  8. Crazepony的理念
  9. __attribute__函数的作用
  10. [云炬WEB实战笔记]批量修改WordPress文章时间按天递增