time函数计算时间
学过C语言的都知道有个time函数可以计算时间,
也好像知道time(NULL)返回的是一个距离1970年1月1日0时0分0秒的秒数。
#include <stdio.h>
#include <time.h> int main(void)
{
printf("%d\n", time(NULL));
return ;
}
运行结果:1390351382
乍一看,说法不假,还真是那么一个秒数。
还有不相信的,进一步把秒数、分钟数、小时数分别取出来。
#include <stdio.h>
#include <time.h> int main(void)
{
int t, s, m, h; t = time(NULL); // 秒
s = t % ;
t /= ; // 分钟
m = t % ;
t /= ; // 小时
h = t % ; printf("%d:%d:%d\n", h, m, s);
return ;
}
运行结果:0:53:5
奇怪!我的电脑明明是8点53分,为什么上面是0点呢?
哎!还是来个彻底的吧!根据这个秒数把日历时间算出来,
看看到底有什么猫腻。
#include <stdio.h>
#include <time.h> char month[][] = {
, , , , , , , , , , , ,
, , , , , , , , , , ,
}; // 四年一闰,百年不闰,四百年再闰
int is_leap_year(int year)
{
// 先找四百年,是闰年
if (year % == )
return ; // 再找一百、二百、三百年,是平年
if (year % == )
return ; // 最后找四的倍数年,是闰年
if (year % == )
return ; // 不是四百的倍数,
// 不是一百、二百、三百的倍数,
// 不是四的倍数,是平年
return ;
} int main(void)
{
int t, s, m, h, D, M, Y;
int leap, i; t = time(NULL);
// 秒
s = t % ;
t /= ;
// 分钟
m = t % ;
t /= ;
// 小时
h = t % ;
t /= ; // 年
Y = ;
while ()
{
leap = is_leap_year(Y);
if (leap && t >= )
{
t -= ;
Y++;
}
else if (!leap && t >= )
{
t -= ;
Y++;
}
else
break;
} // 月
leap = is_leap_year(Y);
for (i = , M = ; t >= month[leap][i] ; i++, M++)
t -= month[leap][i]; // 日
D = t + ; printf("%d-%d-%d %d:%d:%d\n", Y, M, D, h, m, s);
return ;
}
运行结果:2014-1-22 0:56:3
哦,日期是一样的,分钟也是一样,秒数应该也差不多,只有小时数差了8小时。
这回可以分析了!

我的电脑位于东八区,比世界统一时间(零区时间)快8个小时,
而time(NULL)函数返回的恰恰是世界统一时间。
要想获得本地时间,还要再调用localtime。
#include <stdio.h>
#include <time.h> int main(void)
{
time_t rawtime;
struct tm *timeinfo; time(&rawtime);
timeinfo = localtime(&rawtime);
printf("本地时间:%s", asctime(timeinfo)); return ;
}
运行结果:本地时间:Wed Jan 22 09:28:34 2014
这次返回的结果和我电脑显示的时间是一致的(位于格林威治的世界标准时间到了1点28分)。
C语言作为基础语言实现了这样的时间计算方法,
即世界统一时间和本地时间分离的方法。
好多后来的语言也都有这种机制,
你直接调用某个函数返回的秒数,其实是0时区代表的秒数,
用这个秒数计算出的时间只能是0时区的时间,
而想要东八区的时间,你要再加上8小时。
当然一般也很少有这样一步一步算出来的,
想获得本地时间(对我们来说就是东八区的时间),
直接调用localtime或类似的函数好了(这些函数内部肯定也要考虑时区的)。
time函数计算时间的更多相关文章
- [转帖]C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义
C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义 https://blog.csdn.net/willyang519/article/d ...
- 用clock()函数计算多项式的运行时间
百度百科中定义clock():clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t.在MSDN中,查得对clock函数定义如下: clock_t clock(void) ; 简 ...
- MySQL:日期函数、时间函数总结
MySQL 获得当前日期时间 函数 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | n ...
- 自学php找工作【二】 PHP计算时间加一天
最近几天在做一个项目,主要是将SQLserver数据到MySQL数据库,一个url跑一次 同步一次昨天的数据,由于很多数据需要同步,所以做了一个操作界面的,一个单纯跑url的 在其中涉及到了对于时间的 ...
- Mysql日期函数,时间函数使用的总结
一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now();+--------------------- ...
- 学习如何看懂SQL Server执行计划(二)——函数计算篇
二.函数计算部分 --------------------标量聚合--------------------/* 标量聚合-主要在聚合函数操作中产生 计算标量:根据行中的现有值计算出一个新值 流聚合:在 ...
- 手把手教您将 libreoffice 移植到函数计算平台
LibreOffice 是由文档基金会开发的自由及开放源代码的办公室套件.LibreOffice 套件包含文字处理器.电子表格.演示文稿程序.矢量图形编辑器和图表工具.数据库管理程序及创建和编辑数学公 ...
- MySQL:日期函数、时间函数总结
MySQL 获得当前日期时间 函数 查询昨天,时间拼接 select concat(DATE_FORMAT(date_add(now(), interval -1 day),'%Y-%d-%d'),& ...
- MySQL:日期函数、时间函数总结(MySQL 5.X)
http://www.cnblogs.com/she27/archive/2009/01/16/1377089.html 原文:http://www.51sdj.com/phpcms/picture/ ...
随机推荐
- 2038: [2009国家集训队]小Z的袜子(hose) 分块
: [2009国家集训队]小Z的袜子(hose) Time Limit: Sec Memory Limit: MB Submit: Solved: [Submit][Status][Discuss] ...
- Prelogin error: host 127.0.0.1 port 1434 Error reading prelogin response: Connection reset ClientConnectionId:26d4b559-c985-4b2e-bd8e-dd7a53b67e48
我在使用SSM框架的时候,连接的是sqlserver 2008r2数据库,但是查询数据的时候总是出现这样的警告信息,导致的结果是第一次登录的时候获取数据慢或者获取数据失败,具体的log信息如下 警告: ...
- Win10系统如何配置Tomcat环境变量
我们知道win10用户在配置Tomcat环境变量的时候,首先需要配置JAVA,这样才能配置Tomcat环境.很多用户并不知道要如何进行配置,下面就给大家介绍win10系统怎样Tomcat环境变量的. ...
- python 案例:使用BeautifuSoup4的爬虫
我们以腾讯社招页面来做演示:http://hr.tencent.com/position.php?&start=10#a 使用BeautifuSoup4解析器,将招聘网页上的职位名称.职位类别 ...
- hdu 4681(枚举+dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 思路:首先预处理出串C在A,B中的所有的位置,然后从前向后求一次最长公共子序列,从后向前求一次最 ...
- centos7下挂载U盘和移动硬盘
挂载U盘 1.使用fdisk -l命令查看磁盘情况 [root@localhost ~]# fdisk -l 磁盘 /dev/sda:1000.2 GB, 1000204886016 字节,19535 ...
- sql 注入安全过滤-安全模块
<?php /** * 安全模块 * Email:zhangyuan@tieyou.com * 主要针对xss跨站攻击.sql注入等敏感字符串进行过滤 * @author hkshadow */ ...
- A guide to analyzing Python performance
来源:http://www.huyng.com/posts/python-performance-analysis/ While it's not always the case that every ...
- charles_https_通过模拟器安装APP然后抓包
声明,方法参考链接:https://bbs.pediy.com/thread-226435.htm 使用文中的模拟器并不好使,自个使用逍遥模拟器的4.4版本成功抓包, 1>下载逍遥模拟器,在逍遥 ...
- 启发式搜索技术A*
开篇 这篇文章介绍找最短路径的一种算法,它的字我比较喜欢:启发式搜索. 对于入门的好文章不多,而这篇文章就是为初学者而写的,很适合入门的一篇.文章定位:非专业性A*文章,很适合入门. 有图有真相,先给 ...