日期时间转秒数

将例如“2020年8月14日 12:30:15”的日期时间转换为从1970年1月1日0时0分0秒开始至今的UTC时间秒数,不计闰秒。(中国大陆、中国香港、中国澳门、中国台湾与UTC的时差为+8)。

示例

#include <stdio.h>
#include <time.h>
#include <string.h>time_t datetime2sec(int year, int mon, int day, int hour, int min, int sec)
{struct tm tt;memset(&tt, 0, sizeof(tt));tt.tm_year = year - 1900;tt.tm_mon = mon - 1;tt.tm_mday = day;tt.tm_hour = hour;tt.tm_min = min;tt.tm_sec = sec;return mktime(&tt);
}int main()
{printf("%lld\n", datetime2sec(1970, 1, 1, 8, 0, 0)); printf("%lld\n", datetime2sec(2020, 8, 14, 12, 30, 15));return 0;
}
/*output
0
1597379415
*/

time_t类型

#include <time.h>
typedef /* unspecified */ time_t;

虽然C标准没有规定,但是建议使用long long类型来存储time_t类型的值,以确保暂时不溢出。

tm结构

#include <time.h>
struct tm{int tm_sec;       // 秒 [0, 60] (C99之前的范围是[0, 61])int tm_min;      // 分 [0, 59]int tm_hour;    // 小时 [0, 23]int tm_mday;   // 日 [1, 31]int tm_mon;     // 月 [0, 11]int tm_year;    // 年 [1900, ~]int tm_wday;  // 星期几 [0, 6] 从星期日开始int tm_yday;    // 天数 [0, 365]int tm_isdst; // 夏时令,若有效为正值,无效为0,无可用信息为负值
};

tm结构中变量的范围虽然有规定,但是超出范围时也有效,比如:

  • datetime2sec(1970, 1, 1, 8, 0, 999); // 999
  • datetime2sec(2020, 7, 45, 12, 30, 15); // 1597379415

mktime函数

#include <time.h>
time_t mktime( struct tm *time );

成功返回从纪元开始计算的秒数,失败则返回 -1(即time_t溢出)。

技巧

如何计算2008年2月的最后一秒

2008年2月有多少天呢?并不需要知道。

  • datetime2sec(2008, 3, 1, 0, 0, 0) - 1;

【C语言】日期时间转秒数相关推荐

  1. java中算两个时间内的秒数_java – Joda Time – 计算两个日期之间的秒数会引发异常....

    我使用以下代码来计算两个日期之间的秒数差异: long secondsBetween = (Seconds.secondsBetween(new LocalDate("1901-01-01& ...

  2. C 语言日期时间处理

    前言 在标准C中, 日期和时间的处理包含在 time.h 的头文件中. 需要使用日期和时间相关的类型的函数的话, 需要导入time.h. 本篇介绍的部分有: 1. 日期时间相关的类型 2. 日期时间相 ...

  3. java计算时间的秒数差,去掉周末和节假日

    java计算时间的秒数差,去掉周末和节假日 如题所说,计算两个时间的秒数(工作日),拿到这个需求,首先想到的就是怎么去掉周末和节假日,或者两个时间有一个在周末或节假日,或者两个时间都在,要分别进行处理 ...

  4. java计算两个日期相差的秒数

    /*** 计算两个日期相差的秒数** @param startDate* @param endDate* @return*/public static int calLastedTime(Date s ...

  5. C计算1970年到现在时间的秒数

    //*********************************************** //函数功能:计算1970年到现在时间的秒数 //入口参数:Y,M,D,h,m,s当前的年,月,日, ...

  6. 【Windows】windows10时间显示秒数

    一般情况下windows10的电脑时间只显示小时和分钟,但是有的用户想要时间显示更加精细,那么windows10时间怎么显示秒呢?大家可以通过修改注册表的方式进行设置:打开注册表编辑器,定位到Adva ...

  7. 【Windows】windows10 时间显示秒数

    windows10 时间显示秒数 1.win+R打开运行对话框,输入 regedit回车,打开注册表编辑器 2.在注册表编辑器中找到 HKEY_CURRENT_USER > SOFTWARE & ...

  8. php获取当前时间的秒数

    php获取当前时间的秒数 解决方法: 其中time() 函数返回从1970-01-01 00:00:00起到现在的时间的秒数. 用法:http://www.yayihouse.com/yay​ishu ...

  9. python 获取 文件修改时间 距离 当前时间 天数 秒数

    一个文件的修改时间(时间元组类型)距离当前时间的天数/秒数 示例如下: import datetime from datetime import timedelta import osfilemt1= ...

最新文章

  1. oracle 创建用户、授权、表空间
  2. python的就业方向和前景-2020年Python就业方向、就业前景分析
  3. eclipse中一个项目引用另一个项目的方法
  4. Express请求处理-构建模块化路由
  5. K8S部署hazelcast
  6. VTK:Rendering之Model
  7. 【2012百度之星/初赛下】A:度度熊就是要刷排名第一
  8. angular 内容投影
  9. 在GridView开头插入自动编号的方法
  10. zillow房价预测比赛_Kaggle竞赛 —— 房价预测 (House Prices)
  11. 一个项目工程的重构小结
  12. c语言对字符串逆序,【C语言】 字符串逆序
  13. Word怎么删除空白页?6个方法随便用!
  14. 2018美国大学计算机科学,美国大学计算机2018最新排名
  15. 金士顿U盘被写保护的解决方法(量产)
  16. tushare获取沪深300指数历史_tushare正确爬取 指数数据
  17. excel保存快捷键_实例演示:Excel表格数据很少但文件很大,教你如何瘦身缩小...
  18. DNS 动态域名解析
  19. amazon - FileZilla 连接 amazon云服务器
  20. Manjaro 美化与调优

热门文章

  1. 玩转步进电机控制,自定义中文编程
  2. 全国程序员薪酬大曝光!看完我酸了,33% 程序员月薪达到.....
  3. android设备获取 关于手机-》手机名称
  4. vue的简单使用3-v-for、v-if、v-show等指令的使用
  5. OSChina 周日乱弹 ——我2018年的目标是什么?
  6. PR调色 日常Vlog街拍时尚视频博客视频调色PR预设
  7. 互联网老炮儿谈用户,怎一个精字了得
  8. Zepto课程-张晓飞-专题视频课程
  9. html怎么取消转义字符,正确取消html字符的转义
  10. 【大学生软件测试基础】长方体体积 - 边界测试