来TOM上的blog挂掉了,现在准备看能找到多少。。。准备把技术相关的全部转到JAVAEYE上边来。。。恨死TOM了。。
原发表日期:
2008-10-17 09:39:53
linux下编程基础:日期和时间(一)
经过很长时间的赶工。。终于在中秋前几天把这些事情都弄得差不多了。。。。放松下来了。。。
看看一团乱的桌子。。。终于发现还有一本《Begining Linux Programming 3rd Edition》..打开好好的敲敲代码吧。。。
关于日期和时间:
都知道的常识:
UNIX
及Linux的时间系统是由“纪元时间”(Epoch)开始计算起,单位是秒,至于这个Epoch则是从格林威治时间1970年1月1日凌晨0点0分0
秒。这样一来系统的时间其实就是一个数字(确切的说是32为的数字,听说有的Unix是用64位的),正值表示为1970以后,负值则表示1970年以
前。(数据是从从OracleTN上找到的)
不说这个了。。。看编程:
首先一个最简单的显示系统底层时间的程序:
envtime.c
——————————————————
#include <time.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]){
int i;
time_t the_time;
for(i = 0; i <= 10; i++){
// 从基准时间开始计算
the_time = time((time_t)0);
printf("The time is %ld\n", the_time);
// 每2秒执行一次
sleep(2);
}
exit(0);
}
编译执行,这是结果:
The time is 1221201954
The time is 1221201956
The time is 1221201958
The time is 1221201960
The time is 1221201962
The time is 1221201964
The time is 1221201966
The time is 1221201968
The time is 1221201970
The time is 1221201972
呵呵。。。很郁闷的时间。time_t是一个在time.h中预定义的类型,我看像是一个长的数字。。。至于方法time_t time(time *tloc)则是返回一个从tloc开始计时的一个数字。不过看起来不好看罢了。
那么用这个方法可以看看运行程序的时间差了,在运行完每个步骤的时候加上一个计算时间的然后相减不就行了?
有个更好的方法:
double difftime(time_t time1, time_t time2);
这个方法的意思就是得到time1 - time2的值。。。是不是很熟悉。。。我记得我以前自己在图书馆里翻书的时候看TurboC里边的教程就有这个方法。。。很好移植的。。。。
更新一下刚才的程序:
envtime.c
——————————————————
#include <time.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]){
int i;
time_t the_time;
time_t before_time;
time_t after_time;
// 默认给一个空指针,暂时不会出现问题。返回的还是从纪元时间开始的秒数
before_time = time(NULL);
for(i = 0; i <= 10; i++){
// 从基准时间开始计算
the_time = time((time_t)0);
printf("The time is %ld\n", the_time);
// 每2秒执行一次
sleep(2);
}
after_time = time((time_t)0);
printf("This Program strats in %ld\nEnd in %ld\n", before_time, after_time);
printf("program use time %f sec.\n", diff(after_time, begin_time));
exit(0);
}
最后的输出就变成了program use time 20.000000 sec.
是不是很不错?。。。。。
不过这种用秒计算的方式还是不爽。。。主要是看起来不爽。。。。给你一个1221203274你知道这个时间是什么时候吗?(要求精确到秒,按照YYYY-MM-DD hh:min:ss的格式输出)
所以,要换个好看一点的方法:
struct tm *gmtime(const time_t timeval);
(再续。。。。)
PS:中秋单位给发了一盒子月饼,虽然个头不大(但是很好吃),而且只有8个。。。不过盒子很好。。现在好像都是外边看着很好。。
PS:今天中午的午餐还一人给发了一个小月饼和一大板的德芙。。。。呵呵呵呵呵。。。
好长时间没有上Unix-center了。。。。。估计原来在Linux底下的编程全都忘光了。。。。。
不知道怎么才能把在上边敲得东西下下来。。。。。ftp????
分享到:
相关推荐
————————————————————————————————————————————————————————————————————————————————————————————————————...
linux下的C++编程.pdf
掌握:Linux系统主机名的设置 【能力目标】 会配置Linux系统的主机名 【思政目标】 培养学生职业素养 在RHEL7中,引入了静态(static)、瞬态(transient)和灵活(pretty)三种主机名。 “静态”主机名——也称为内核主机名...
假如tom的出生日期有错误,应该是1973-09-02,则可以用update语句来修正: mysql> update mytable set birth = "1973-09-02" where name = "tom"; 再用2中的语句看看是否已更正过来。 · 4、选择特定行 上面...
微软起诉TomTom专利侵权,首次涉及Linux.pdf
RDD编程初级实践Tom,DataBase,80 Tom,Algorithm,50 Tom,DataStructure,60 Jim,DataBas
Linux C编程一站式学习.pdf。经典详细的介绍了C语言的本质,以及在Linux系统中的编译、运行特性。高效有用的说明了Linux下的C语言应用编程和Linux系统编程的各个方面。是Linux系统编程的很有价值的资料。
ASP.NET源码——[小偷采集]好22网络TOM新闻小偷.zip
python强大的面向对象能力,让你更好的理解python核心语法
本文档内部是 Linux通讯录代码讲解和截图,内容简单详细
会说话的tom猫Talking Tom Cat是一款手机宠物类应用。没事儿玩玩儿也挺有意思,至少这个宠物猫还能和你互动一下。玩法: 1.和TOM交谈,他会用有趣的声音重复你 2.抚摸.
会说话的汤姆猫talking tom cat 1.6更新内容:这次Tom带着新的升级回来了1.6版修复了一些bug问题,关联Facebook账户让您更容易得和朋友分享视频通过Outfit7简报第一时间获得有关Tom和它会说话的朋友们的新闻压缩包...
OpenTom是适用于TomTom:trade_mark:设备的小型开源Linux发行版。 入门 安装以下依赖项:颠覆chrpath fluid imagemagick xsltproc 在get_cross_env.sh设置ROOT envvar source get_cross_env.sh 运行make开始初始...
旨在帮助每位Linux用户,从刚开始的新手到曾经经历过一两次的人,并希望对Caldera的OpenLinux的所有功能都提供方便的参考。
Tom_Swans_GNU_C++_for_Linux.rar。大小 2 Mb 左右。
tomtom导航仪驱动程序是同名gps导航仪的驱动程序,tomtom是荷兰公司推出的一款智能导航系统,具有快速、安全、精准、便捷的特点,搭载云平台使用让导航更简单,为您提供该导航仪的驱动程序,电脑云端识别时必备的...
tom:x:1002: betty:x:1003: //省略部分输出 查看组配置文件命令: 组配置文件含义 注意:每个用户都可以加入多个附加组,但是只能属于一个初始组。 群组名称: 群组密码: 用户组ID: 组成员: [root@tea ~]# ...
TOMTOM导航仪驱动,便于在电脑上识别TOMTOM导航仪。
适用于 Linux 的 Tomtom 有氧手表阅读器/驱动程序。 直接从 Tomtom 多项运动有氧运动手表读取活动文件的 Linux 应用程序。 活动文件将使用“YYYY-MM-DD_HH:MM::SS.ttbin”文件名模式写入当前文件夹。 可以使用 Tom...
该项目旨在帮助任何人创建一个开源环境,以在 TomTom(tm) 设备上开发或移植应用程序。