一起talk C栗子吧(第三十七回:C语言实例--获取当前日期和时间)

来源:互联网 发布:U盘品牌 知乎 编辑:程序博客网 时间:2024/05/16 01:52

各位看官们,大家好,上一回中咱们说的是螺旋矩阵的例子,这一回咱们说的例子是:获取当前日期和时
间。闲话休提,言归正转。让我们一起talk C栗子吧!

看官们,在正式开始之前,我先问一个问题:如果我们想查看当前的日期和时间怎么办?“看表呀!“ 。从
这位看官的回答中,就能看出来大家还没有进入状态。我的意思是:我们在Mint系统上如果想查看当前的
日期和时间,应该怎么办? ”使用date命令”。完全正确!这位看官说的很好,看来你已经进入状态了。经
过你这么一说,我希望各位看官都跟着进入状态。我们现在就开始今天的内容。

Linux中提供了date命令来显示或者修改系统的日期和时间,不过这个命令是在终端中运行的,如果我们
想在C语言编写的程序中显示系统的日期和时间怎么办?这就需要使用time.h库提供的相关函数。我们
需要使用的函数有:time(),localtime()和ctime().接下来我分别介绍一下这些库函数的功能及其用法,
然后我们就可以使用它们来获取系统日期和时间了:

time的函数原型:time_t time(time_t *t)。
当t为空时,它返回从1970-01-01 00:00:00到当前时间的秒数,当t不为空时,它会把返回的秒数存放
到参数t中。另外,这里的time_t在Linux上是用double类型实现的,所以可以把它当作double类型。

localtime的函数原型:struct tm *localtime(const time_t *timep)。
它把存放在time中的时间转换成与当地时区匹配的时间,并且存放在tm类型的返回值中。这样我就
能到返回值中获取我们想要的时间了。关于tm类型,我专门说明一下:

tm类型是一个结构体类型,其原型如下:

           struct tm {               int tm_sec;         /* seconds */               int tm_min;         /* minutes */               int tm_hour;        /* hours */               int tm_mday;        /* day of the month */               int tm_mon;         /* month */               int tm_year;        /* year */               int tm_wday;        /* day of the week */               int tm_yday;        /* day in the year */               int tm_isdst;       /* daylight saving time */           };

大家从注释中可以看到各个成员的意思,我就不多说了。我特别说一下tm_year和tm_mon。
tm_year是从1900到现在年数差。比如现在是2015年,它会返回115这个差值,因此我们使用的时候
需要加上它的基数:1900。
tm_mon是一个从0到11的数值,其中的原理我想大家能理解吧,因为这和C语言中数组的下标是一样
的。鉴于这个原理,我们在使用的时候需要加1.不然你的时钟永远比其它人的时钟晚一个月。

这些细节的内容说完了,接下来我说一下获取日期和时间的具体步骤

  1. 定义tm和time_t类型的变量,用来存放时间;
  2. 使用time函数获取时间,并且把时间存放到time_t类型变量中;
  3. 使用localtime从time_t类型变量中获取当前时区中的日期和时间,并且存放到tm类型的变量中;
  4. 从tm类型的变量中获取当前日期和时间。

看官们,正文中就不写代码了,详细的代码放到了我的资源中,大家可以点击这里下载使用。看官们在查
看运行结果时发现我们得到的日期和时间和date命令得到的日期和时间在格式上不一样。如果大家非常喜
欢date命令显示时间和日期的哪种格式,可以使用一个叫ctime的函数,它显示的结果会让你满意的
另外,我在代码中也使用了ctime函数,就当作是给大家一个示例吧。

各位看官,关于获取当前日期和时间的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。

0 0