C语言 RTC时间(年月日时分秒) 和 时间戳 互相转换

news2024/11/26 18:24:45

一、介绍

  在C语言中,将年月日时分秒转换为时间戳(Unix时间戳,即从1970年1月1日00:00:00 UTC到现在的秒数)通常需要使用struct tm结构体和timegm或mktime函数。(注意,mktime函数假设struct tm是本地时间,而timegm函数假设它是UTC时间)。然而,标准的C库并没有直接提供timegm函数,但在许多系统(如GNU C库)中可以找到它作为扩展。
  如果没有timegm函数,也可以使用mktime和timezone(或tzset和localtime与UTC之间的差异)来手动计算UTC时间戳。但请注意,这种方法可能不是跨平台的,并且可能依赖于本地系统的时区设置。

  在C语言中,将时间戳(Unix时间戳)转换为年月日时分秒,可以使用localtime函数,该函数会将一个时间戳转换为一个指向struct tm 结构体的指针该结构体包含了分解后的日期和时间信息

二、RTC时间信息转时间戳

测试代码

#include <stdio.h>  
#include <time.h>  
  
time_t convert_to_timestamp(int year, int month, int day, int hour, int minute, int second)
{  
    struct tm timeinfo = {0};  
    timeinfo.tm_year = year - 1900;  // Year since 1900  
    timeinfo.tm_mon = month - 1;     // Month since January. 0-11  
    timeinfo.tm_mday = day;  
    timeinfo.tm_hour = hour;  
    timeinfo.tm_min = minute;  
    timeinfo.tm_sec = second;  
    timeinfo.tm_isdst = -1;         // Let mktime() determine if DST is in effect  
  
    // Note: mktime assumes local time, not UTC. If your local time is UTC, this is fine.  
    // Otherwise, you need to adjust for timezone differences.  
    return mktime(&timeinfo);  
}  
  
int main() 
{  
    time_t timestamp = convert_to_timestamp(2024, 6, 5, 12, 30, 6);  
    if (timestamp == (time_t)-1) 
    {  
        perror("Error converting to timestamp");  
        return 1;  
    }  
    printf("Timestamp: %ld\n", (long)timestamp);  
    return 0;  
}

测试结果:
在这里插入图片描述
和时间戳在线工具比较
在这里插入图片描述

三、时间戳转RTC时间信息

测试代码

#include <stdio.h>  
#include <time.h>  
  
void timestamp_to_datetime(time_t timestamp, struct tm *datetime) 
{  
    // 使用localtime函数将时间戳转换为本地时间(如果需要UTC时间,请使用gmtime)  
    *datetime = *localtime(&timestamp);  
  
    // 输出日期和时间  
    printf("Year: %d\n", datetime->tm_year + 1900); // tm_year是从1900年开始的  
    printf("Month: %d\n", datetime->tm_mon + 1);     // tm_mon是从0开始的  
    printf("Day: %d\n", datetime->tm_mday);  
    printf("Hour: %d\n", datetime->tm_hour);  
    printf("Minute: %d\n", datetime->tm_min);  
    printf("Second: %d\n", datetime->tm_sec);  
}  
  
int main() 
{  
    // 假设我们有一个时间戳(例如,当前时间的时间戳)  
    //time_t timestamp = time(NULL); // 获取当前时间的时间戳  
    time_t timestamp =1717561806;
  
    // 创建一个struct tm变量来存储转换后的日期和时间  
    struct tm datetime;  
  
    // 调用函数进行转换  
    timestamp_to_datetime(timestamp, &datetime);  
  
    return 0;  
}

测试结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1796973.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【会议征稿,SPIE独立出版】第三届智能机械与人机交互技术学术会议(IHCIT 2024,7月5-7)

由北京航空航天大学指导&#xff0c;北京航空航天大学自动化科学与电气工程学院主办&#xff0c;AEIC学术交流中心承办的第三届智能机械与人机交互技术学术会议&#xff08;IHCIT 2024&#xff09;将定于2024年7月5-7日于中国杭州召开。 大会面向基础与前沿、学科与产业&#x…

传输协议TCP-原理部分

传输控制协议TCP&#xff08;Transmission Control Protocol&#xff09;一种基于连接的可靠的稳定的无重复的传输协议。 1、TCP头部信息 TCP协议头部信息如下&#xff1a; 一共占用20个字节 16位源端口号&#xff1a;发送进程的主机端口16位目的端口号&#xff1a;接收主机…

ComfyUI 完全入门:AI抠图/去除背景/更换图片背景/更换视频背景

本文继续给大家分享ComfyUI的基本使用技巧&#xff1a;抠图&#xff0c;或者说去除背景。抠图是处理图片的一项常见工作&#xff0c;是设计师们的基本能力&#xff0c;现在有了AI&#xff0c;抠图的效率也得到了极大的提升。最近看到有小伙伴通过AI抠图赚了外国人1000美刀&…

中职电子应用技术专业教学解决方案

前言 在21世纪的信息时代&#xff0c;电子技术作为科技进步的基石&#xff0c;其重要性不言而喻。随着产业的快速发展&#xff0c;对中职电子应用技术专业人才的需求日益增长&#xff0c;不仅要求学生掌握扎实的专业技能&#xff0c;还强调其实践能力与创新能力的培养。为应对这…

Spring-Security(一)-源码分析及认证流程

Spring Security & Oauth2系列&#xff1a; Spring Security&#xff08;一&#xff09; 源码分析及认证流程 Spring Security&#xff08;二&#xff09;OAuth2认证详解及自定义异常处理 文章目录 1、Spring Security 概述1.1 Spring Security项目核心模块 1.2 Spring S…

小猪APP分发:高效的APP托管服务分发平台

有没有遇到过这样的尴尬&#xff1f;辛辛苦苦开发了一个APP&#xff0c;却在托管和分发环节卡壳。想想看&#xff0c;花了那么多时间精力开发的APP&#xff0c;却因为分发不顺利而影响用户体验&#xff0c;实在是让人抓狂。而小猪APP分发就成了你最好的选择。 APP封装分发www.…

LabVIEW如何确保步进电机的长期稳定运行

步进电机因其良好的定位精度和控制性&#xff0c;在自动化设备中得到了广泛应用。然而&#xff0c;长期稳定运行对于任何电机系统都是一个重要的挑战。LabVIEW作为一款强大的图形化编程语言&#xff0c;通过其灵活的控制算法和实时监控能力&#xff0c;为步进电机的稳定运行提供…

探索Adobe XD:高效UI设计软件的中文入门教程

在这个数字化世界里&#xff0c;创意设计不仅是为了吸引观众的注意&#xff0c;也是用户体验的核心部分。强大的设计工具可以帮助设计师创造出明亮的视觉效果&#xff0c;从而提高用户体验。 一、Adobe XD是什么&#xff1f; Adobe XD是一家知名软件公司 Adobe Systems 用户体…

数据加密验签机的工作原理

数据加密验签机&#xff0c;作为网络安全领域的关键设备&#xff0c;其重要性不言而喻。以下是对数据加密验签机的详细介绍&#xff1a; 一、引言 在数字化时代&#xff0c;数据的机密性、完整性和真实性是企业和个人都极为关注的问题。数据加密验签机&#xff0c;正是为了解决…

17.1 命令行-输入与输出、命令行参数、命令行标志

1. 输入与输出 命令行程序被设计为在终端运行。在图形用户界面(GUI)问世以前的年代&#xff0c;命令行程序是与计算机交互的唯一方式。 即便是在图形用户界面大行其道的当今&#xff0c;对程序员和系统管理员来说&#xff0c;命令行程序依然是一种流行而实用的与底层操作系统…

Amazon云计算AWS(二)

目录 三、简单存储服务S3&#xff08;一&#xff09;S3的基本概念和操作&#xff08;二&#xff09;S3的数据一致性模型&#xff08;三&#xff09;S3的安全措施 四、非关系型数据库服务SimpleDB和DynamoDB&#xff08;一&#xff09;非关系型数据库与传统关系数据库的比较&…

【WPF编程宝典】第8讲:形状、画刷和变换

本讲介绍了WPF中的基本形状&#xff0c;包括矩形、椭圆形、直线、折线、多边形、点划线等。还介绍四类画刷的使用。介绍了形状的旋转及移动等变化&#xff0c;元素的旋转及移动等。最后介绍了透明。 1.形状 WPF支持的形状有&#xff1a;Rectangle&#xff0c;Ellipse&#xff…

代码签名证书申请流程

在当今的软件开发与分发过程中&#xff0c;确保代码的安全性和可信度变得至关重要。代码签名证书作为这一安全机制的重要组成部分&#xff0c;不仅帮助开发者保护其软件免遭恶意篡改&#xff0c;也为用户提供了验证软件来源和完整性的手段。 一、什么是代码签名证书 代码签名…

【MySQL】数据库的增删查改

文章目录 前言1. 新增1.1 全插入1.2 指定某些列名插入1.3 多行插入1.4 边查询边插入 2. 约束2.1 非空约束2.2 唯一性约束2.3 默认值约束2.4 主键约束2.5 外键约束2.6 check 约束2.7 外键的逻辑删除 3. 查询 - 初阶3.1 全列查询3.2 指定列查询3.3 指定表达式查询3.4 别名查询3.5…

基于不确定性的相互学习 用于联合医学图像分类和分割

文章目录 Uncertainty-Informed Mutual Learning for Joint Medical Image Classification and Segmentation摘要方法实验结果 Uncertainty-Informed Mutual Learning for Joint Medical Image Classification and Segmentation 摘要 该论文提出了一种基于不确定性的相互学习…

互联网轻量级框架整合之SpringMVC初始化及各组件工作原理

Spring MVC的初始化和流程 MVC理念的发展 SpringMVC是Spring提供给Web应用领域的框架设计&#xff0c;MVC分别是Model-View-Controller的缩写&#xff0c;它是一个设计理念&#xff0c;不仅仅存在于Java中&#xff0c;各类语言及开发均可用&#xff0c;其运转流程和各组件的应…

华为机考入门python3--(33)牛客33-图片整理

分类&#xff1a;排序 知识点&#xff1a; 对字符串中的字符ASCII码排序 sorted(my_str) 题目来自【牛客】 def sort_images(s):# 可以使用ord(A)求A的ASCII值&#xff0c;需要注意的是A的值&#xff08;65&#xff09;比a的值小&#xff08;97&#xff09;sorted_images …

QT4-QT5升级(3)GBK-UTF-8-乱码“常量中有换行符”

乱码有两种&#xff1a;我命名为汉字乱码菱形乱码如下&#xff1a; 1.文件编码为&#xff1a; GB2312 打开编码&#xff1a; GB2312 编译后&#xff1a; QString 部分字符串 常量中有换行符 char * …

【WEEK15】 【DAY3】定时任务【中文版】

2024.6.5 Wednesday 接上文【WEEK15】 【DAY2】【DAY3】邮件任务【中文版】 目录 17.异步、定时、邮件任务17.3.定时任务17.3.1.两个注解&#xff1a;17.3.2.Cron表达式17.3.3.修改Springboot09TestApplication.java开启定时功能的注解17.3.4.新建ScheduledService.java17.3.5.…

操作系统教材第6版——个人笔记5

3.2 单连续分区存储管理 3.2.1 单连续分区存储管理 单连续分区存储管理 每个进程占用一个物理上完全连续的存储空间(区域) 单用户连续分区存储管理固定分区存储管理可变分区存储管理 单用户连续分区存储管理 主存区域划分为系统区与用户区设置一个栅栏寄存器界分两个区域…