`
mncc
  • 浏览: 54258 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【TOM旧博客内容转移】【补】中秋时就应该发的——linux下编程基础:日期和时间(一)

阅读更多

 

来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服务器安装tomcat(图文详解)

    ————————————————————————————————————————————————————————————————————————————————————————————————————...

    linux下的C++编程.pdf

    Linux下的C++编程环境搭建和基础概念: Linux操作系统版本:文档中提及Red Hat Linux 7.2,这是一个较早版本的Linux发行版。Red Hat是一个著名的Linux发行版本,广泛用于服务器端。 gcc和g++编译器:文档显示了gcc...

    深入学习GNU+C+++for+Linux+编程技术.pdf

    《深入学习GNU+C++ for Linux 编程技术》是由美国著名计算机图书作家Tom Swan所著的一本专注于Linux系统下C++编程的专著。本书不仅为读者介绍了Linux环境下C++编程的基础工具,还深入探讨了面向对象编程中的关键概念...

    C#编程基础:初学者的语法指南教程完整版易懂!!!.md

    ### C#编程基础知识点详解 #### 一、C#编程语言概述 - **起源与发展**: - C#(读作C Sharp)是由微软公司于2000年设计的一种面向对象的编程语言。 - 它融合了C和C++的优点,并在此基础上增加了现代编程语言的...

    微软起诉TomTom专利侵权,首次涉及Linux.pdf

    1. **Linux操作系统**:Linux是一种自由和开放源代码的操作系统,其内核由林纳斯·托瓦兹创建。它广泛应用于服务器、个人计算机、移动设备等,并且由于其开源特性,吸引了大量开发者参与改进和维护。 2. **专利侵权...

    linux基础命令语言

    ### Linux基础命令语言详解 #### 一、系统控制与时间管理命令 - **shutdown**: 用于关闭或重启系统。 - `shutdown -h now`: 立即关机。 - `shutdown -r now`: 立即重启。 - `shutdown -h 10`: 在10分钟后关机。...

    Tom_Swans_GNU_C++_for_Linux.rar

    《Tom Swans GNU C++ for Linux》是一本深入讲解如何在Linux环境下使用GNU C++进行编程的资源集合。这份压缩包文件包含了一系列关于C++编程和GNU工具链的知识点,适用于那些希望在开源操作系统上提升C++编程技能的...

    ASP.NET源码——[小偷采集]好22网络TOM新闻小偷.zip

    【ASP.NET源码——[小偷采集]好22网络TOM新闻小偷.zip】是一个包含ASP.NET技术的源代码项目,主要用于从TOM新闻网站自动抓取和收集信息。这个项目的名称暗示了其功能,即像“小偷”一样悄悄地从目标网站获取数据,这...

    面向对象编程基础_python面向对象_python教程_

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它基于“对象”的概念,将数据和操作这些数据的方法封装在一起。在Python中,面向对象编程是其核心特性之一,使得Python成为了一种非常适合...

    linux下mysql操作及编程

    在Linux环境下,MySQL的操作和编程是系统管理员和开发人员必须掌握的关键技能。MySQL是一种流行的关系型数据库管理系统,它在Linux系统中的应用广泛。以下是一些关于Linux下MySQL操作和编程的基本知识点: 1. **...

    MySQL 入门学习 ——基础教程

    假如tom的出生日期有错误,应该是1973-09-02,则可以用update语句来修正: mysql&gt; update mytable set birth = "1973-09-02" where name = "tom"; 再用2中的语句看看是否已更正过来。 · 4、选择特定行 上面...

    RDD编程初级实践Tom,DataBase,80 Tom,Algorithm,50 Tom,DataStructure,60 Jim,DataBas

    RDD提供了一种高度抽象的数据并行计算方式,能够在大规模数据处理时保持高效性能和容错能力。本实践将围绕RDD展开,通过具体的实例帮助你理解和掌握RDD的使用。 首先,我们看到标题中提到了"Tom,DataBase,80",这...

    tommath.zip C++大整数库

    《C++大整数库——tommath》 在IT领域,特别是在加密算法和高级数学运算中,处理大整数是一项必不可少的任务。对于这样的需求,C++社区开发了多个库,其中tommath是一个广泛使用的开源库,专为大整数运算提供高效的...

    linux下mysql操作及编程.docx

    Linux 下 MySQL 操作及编程是指在 Linux 操作系统中使用 MySQL 数据库管理系统的操作和编程技术。 MySQL 是一个流行的开源关系数据库管理系统,可以在多种操作系统中使用,包括 Linux、Windows 和 macOS 等。 一、...

    Linux编程复习参考(模拟试题).docx

    答案:Linux 通过 i 节点表将文件的逻辑结构和物理结构进行转换 i 节点是一个 64 字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。 解释:在 ...

    linux基础代码 1111

    ### Linux基础命令详解 #### 一、文件与目录管理 - **`ls`**: 列出目录内容 - `ls`: 显示当前目录下的文件和文件夹。 - `ls -a`: 显示所有文件及文件夹,包括隐藏文件(以`.`开头的文件)。 - `ls -l`: 以长...

    Perl 语言编程 第三版 作者:Larry Wall, Tom Christiansen, and Jon Orwant 译者:何伟平

    Perl语言编程,作为一门强大的文本处理和脚本编程语言,由Larry Wall、Tom Christiansen和Jon Orwant共同创作,并在第三版中得到了进一步完善。这本书是Perl学习者的宝贵资源,无论你是初学者还是有一定编程经验的...

    OpenTom:适用于 TomTom 设备的 Linux 发行版-开源

    OpenTom 是一个专门为 TomTom GPS 导航设备设计的开源 Linux 发行版,它为开发者提供了一个平台,以便在这些设备上开发、移植和运行自定义应用程序。这个项目的核心目标是促进开放源代码文化,鼓励创新,并降低在 ...

Global site tag (gtag.js) - Google Analytics