linux C 获取日期时间

概述

世界标准时间( Coordinated Universal Time UTC ),也就是大家所熟知的格林威治标准时间( Greenwich Mean Time GMT )。世界各地时间也世界标准时间为基准划分为不同的时区,例如,中国的北京时间与UTC 的时差为+8 ,也就是UTC+8 。美国是UTC-5
 
Calendar Time :日历时间,是用从一个标准时间点到此时的时间经过的秒数来表示的时间。无论哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。日历时间返回自1970-1-1:00:00:00 以来所经过的秒数累计值。
 
 
跟日期时间相关的shell命令
 
$ date                     // 显示当前日期
$ time                    // 显示程序运行的时间
$ hwclock              // 显示与设定硬件时钟
$ clock                   // 显示与设定硬件时钟,是hwclock 的链接文件
$ cal                       // 显示日历
 
 
1 date 显示或设置当前日期时间
$ date              显示当前日期时间 -- 中国北京时间 CST China Standard Time UTC+8:00
2008 05 01 星期四 04:28:27 CST
$ date –u         显示当前日期时间 -- 世界标准时间 UTC
2008 04 30 星期三 20:29:23 UTC
以上两个时间相比有8 个小时的时差
$ date –R         显示当前日期时间 – RFC 格式
Thu, 01 May 2008 04:30:25 +0800
$ date -s 20080501        设置日期
$ date -s 20:40:30          设置时间
 
 
2 time 显示程序运行时消耗的实际时间,用户CPU 时间和系统CPU 时间。
$ time a.out                  可执行程序a.out
real     0m10.081s              程序开始运行到结束的时间
user     0m0.000s        用户CPU 时间,
sys      0m0.004s        系统CPU 时间
 
用户CPU 时间等于times 函数返回的struct tms 中的tms_utime tms_cutime 和。
系统CPU 时间等于times 函数返回的struct tms 中的tms_stime tms_cstime 和。
 
 
3 hwclock        显示与设定硬件时钟
Linux 中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS 画面设定的时钟。系统时钟则是指 kernel 中的时钟。当Linux 启动时系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux 相关指令与函数都是读取系统时钟的设定。
 
# hwclock –show          显示硬件时钟的时间与日期
# hwclock –hctosys             将硬件时钟调整为与目前的系统时钟一致
# hwclock –systohc             将硬件时钟调整为与目前的系统时钟一致
# hwclock --set --date="20080430 21:30:30"              设定硬件时钟
# hwclock                     hwclock –show
 
Clock 命名是hwclock 的链接文件
$ ls -al /sbin/clock
lrwxrwxrwx 1 root root 7 03-08 23:59 /sbin/clock -> hwclock
 
 
4 )显示日历
$ cal                             显示本年本月的日历
$ cal month year    显示指定年月的日历: cal 4 2008
 
 

1.2 跟日期时间有关的数据结构

1.2.1 clock_t 结构

程序开始运行到此时所经过的CPU 时钟计时单元数用clock 数据类型表示。
 
typedef long clock_t;
#define CLOCKS_PER_SEC ((clock_t)1000)      // 每个时钟单元是1 毫秒
 

1.2.2 time_t 结构

日历时间( Calendar Time )是通过time_t 数据类型来表示的,用time_t 表示的时间(日历时间)是从一个时间点(1970 1 1 0 0 0 )到此时的秒数。
 
typedef long time_t;                     // 时间值
 

1.2.3 tm结构

通过tm 结构来获得日期和时间
 
struct tm {
        int tm_sec;           /* 取值区间为[0,59] */
        int tm_min;           /* - 取值区间为[0,59] */
        int tm_hour;          /* - 取值区间为[0,23] */
        int tm_mday;        /* 一个月中的日期 - 取值区间为[1,31] */
        int tm_mon;          /* 月份(从一月开始,0 代表一月) - 取值区间为[0,11] */
        int tm_year;          /* 年份,其值等于实际年份减去1900 */
        int tm_wday;        /* 星期取值区间为[0,6] ,其中0 代表星期天,1 代表星期一 */
        int tm_yday;         /* 从每年1 1 日开始的天数取值区间[0,365] ,其中0 代表1 1 */
        int tm_isdst;   /* 夏令时标识符,夏令时tm_isdst 为正;不实行夏令时tm_isdst 0
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值