linux获取系统时间 linux用脚本获取实时时间

大家好,今天小编来为大家解答linux获取系统时间这个问题,linux用脚本获取实时时间很多人还不知道,现在让我们一起来看看吧!

Linux查看系统时间

date命令的功能是显示和设置系统日期和时间。

该命令的一般格式为: date [选项]显示时间格式(以+开头,后面接格式)

date设置时间格式

命令中各选项的含义分别为:

-d datestr,--date datestr显示由datestr描述的日期

-s datestr,--set datestr设置datestr描述的日期

-u,--universal显示或设置通用时间时间域

% H小时(00..23)

% I小时(01..12)

% k小时(0..23)

% l小时(1..12)

% M分(00..59)

% p显示出AM或PM

% r时间(hh:mm:ss AM或PM),12小时

% s从1970年1月1日00:00:00到目前经历的秒数

% S秒(00..59)

% T时间(24小时制)(hh:mm:ss)

% X显示时间的格式(%H:%M:%S)

% Z时区日期域

% a星期几的简称( Sun..Sat)

% A星期几的全称( Sunday..Saturday)

% b月的简称(Jan..Dec)

% B月的全称(January..December)

% c日期和时间( Mon Nov 8 14:12:46 CST 1999)

% d一个月的第几天(01..31)

% D日期(mm/dd/yy)

% h和%b选项相同

% j一年的第几天(001..366)

% m月(01..12)

% w一个星期的第几天(0代表星期天)

% W一年的第几个星期(00..53,星期一为第一天)

% x显示日期的格式(mm/dd/yy)

% y年的最后两个数字( 1999则是99)

% Y年(例如:1970,1996等)

需要特别说明的是,只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。

下列环境变量将会影响到 date命令的执行效果。

LANG确定在 LC_ALL和相应的环境变量(以 LC_开头)都不指定语言环境的时候将要使用的缺省语言环境。

LC_ALL确定用于覆盖由 LANG或任何以 LC_开头的环境变量设置的任何语言环境类别值的语言环境。

LC_CTYPE确定文本数据的字节序列解释为字符时使用的语言环境(例如参数中单对多字节字符)。

LC_MESSAGES决定写信息应使用的语言。

LC_TIME确定由 date写入的日期和时间字符串的内容。

NLSPATH为处理 LC_MESSAGES决定消息目录的位置。

TZ指定时间和日期使用的时区,除非指定了-u选项。如果未设置 TZ变量且未指定-u标志,则使用非指定的系统缺省时区。

使用示例一:

#date//显示当前日期

#date-s//设置当前时间,只有root权限才能设置,其他只能查看。

#date-s 20061010//设置成20061010,这样会把具体时间设置成空00:00:00

#date-s 12:23:23//设置具体时间,不会对日期做更改

#date-s“12:12:23 2006-10-10″//这样可以设置全部时间

CST:中国标准时间(China Standard Time),这个解释可能是针对RedHat Linux。

UTC:协调世界时,又称世界标准时间,简称UTC,从英文国际时间/法文协调时间”Universal Time/Temps Cordonné”而来。中国大陆、香港、澳门、台湾、蒙古国、新加坡、马来西亚、菲律宾、澳洲西部的时间与UTC的时差均为+8,也就是UTC+8。

GMT:格林尼治标准时间(旧译格林威治平均时间或格林威治标准时间;英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。

设置完系统时间后,还需要同步到硬件时钟上

# clock--systohc

硬件时钟与系统时钟同步:

# hwclock--hctosys

或者

# clock--hctosys

上面命令中,--hctosys表示Hardware Clock to SYStem clock。

系统时钟和硬件时钟同步:

# hwclock--systohc

或者

# clock--systohc

使用示例二:

用指定的格式显示时间。

$ date‘+This date now is=>%x,time is now=>%X,thank you!'

This date now is=>11/12/99,time is now=>17:53:01,thank you!

用预定的格式显示当前的时间。

# date

Fri Nov 26 15:20:18 CST 1999

设置时间为下午14点36分。

# date-s 14:36:00

Fri Nov 26 14:15:00 CST 1999

设置时间为1999年11月28号。

# date-s 991128

Sun Nov 28 00:00:00 CST 1999

设置一天前

date--date"1 days ago"+"%Y-%m-%d"

Date命令参数小技巧

由于Linux对man date-d参数说的比较模糊,故举例如下:

#-d,--date=STRING display time described by STRING, not `now'

For Linux

[root@linuxso.com~ ]# date-d next-day+%Y%m%d

20060328

[root@linuxso.com~ ]# date-d last-day+%Y%m%d

20060326

[root@linuxso.com~ ]# date-d yesterday+%Y%m%d

20060326

[root@linuxso.com~ ]# date-d tomorrow+%Y%m%d

20060328

[root@linuxso.com~ ]# date-d last-month+%Y%m

200602

[root@linuxso.com~ ]# date-d next-month+%Y%m

200604

[root@linuxso.com~ ]# date-d next-year+%Y

2007

------------------------------------------

而FreeBSD则不同;举例如下:

For FreeBSD

[root@linuxso.com~]# date-v-1d+%Y%m%d

20060326

[root@linuxso.com~]# date-v-1m+%Y%m%d

20060227

[root@linuxso.com~]# date-v-1y+%Y%m%d

20050327

使用示例三:

在linux环境下要取得几天前的时期只要使用

date-d"x days ago"+%Y%m%d

x用数字代替,如果需要几天前的直接写正数,如果要几天后的日期直接写负数即可;

date-d"x weeks ago"+%Y%m%d

x用数字代替,如果需要几周前的直接写正数,如果要几周后的日期直接写负数即可;

date-d"x years ago"+%Y%m%d

x用数字代替,如果需要几年前的直接写正数,如果要几年后的日期直接写负数即可;

看下面例子:

[root@linuxso.com~]# date+%Y%m%d

20100107

上面是今天的日期20100107

[root@linuxso.com~]# date-d"2 days ago"+%Y%m%d

20100105

上面是两天前的日期

[root@linuxso.com~]# date-d"4 days ago"+%Y%m%d

20100103

上面是四天前的日期

[root@linuxso.com~]# date-d"-1 days ago"+%Y%m%d

20100108

上面是一天后的日期

[root@linuxso.com~]# date-d"-2 days ago"+%Y%m%d

20100109

上面是两天后的日期

[root@linuxso.com~]# date-d"1 week ago"+%Y%m%d

20091231

上面是一周前的日期

[root@linuxso.com~]# date-d"1 year ago"+%Y%m%d

20090107

上面是一年前的日期

Linux下C语言获得系统时间的方法

没有完整程序,不过能提供一点资料

int gettimeofday(struct timeval* tv,struct timezone*tz);

这个函数可以获取当前时间,貌似只要第一个结构体就行了

struct timeval

{

time_t tv_sec;//秒 [long int]

suseconds_t tv_usec;//微秒 [long int],(10E-6 second)

};

struct timeval

{

long tv_sec;

long tv_usec;

};

然后取微秒的前三位就是小数了,之后把秒 tv_sec转化为 tm格式,参数用秒的指针就行

struct tm* gmtime(const time_t* t);

//转换成格林威治时间。有时称为GMT或UTC。

struct tm* localtime(const time_t*t);

//转换成本地时间。它可以透过修改TZ环境变数来在一台机器中,不同使用者表示不同时间.

下面是tm的部分参数

int tm_sec;//tm_sec表「秒」数,在[0,61]之间,多出来的两秒是用来处理跳秒问题用的。/* Seconds: 0-59(K&R says 0-61?)*/

int tm_min;//tm_min表「分」数,在[0,59]之间。

int tm_hour;//tm_hour表「时」数,在[0,23]之间。

int tm_mday;//tm_mday表「本月第几日」,在[1,31]之间。

int tm_mon;//tm_mon表「本年第几月」,在[0,11]之间。

int tm_year;//tm_year要加1900表示那一年。/*/*年份,其值从1900开始*/*/

int tm_wday;//tm_wday表「本周第几日」,在[0,6]之间。/* Days since Sunday(0-6)*//*其中0代表星期天,1代表星期一,以此类推*/

int tm_yday;//tm_yday表「本年第几日」,在[0,365]之间,闰年有366日。/*其中0代表1月1日,1代表1月2日,以此类推*/*/

int tm_isdst;//tm_isdst表是否为「日光节约时间」

------------------------------华丽丽的分割线--------------------------------------------------

由于很长时间没编程了,也没有Linux环境,我就简单写几行代码,仅作参考

#include<stdio.h>

#include<time.h>

#include<sys/time.h>

#include<unistd.h>

//这四个不一定够用了

struct timeval tv;

struct timezone tz;

struct tm* p_tm;

//变量没有初始化习惯不好,不要学

gettimeofday(&tv,&tz);

p_tm= gmtime((const time_t*)&tv.tv_sec);

字符串的组装尤其格式问题自己解决吧

年 p_tm->tm_year+ 1900

月 p_tm->tm_mon+ 1

日 p_tm->tm_mday

时 p_tm->tm_hour+ 1

分 p_tm->tm_min+ 1

秒 p_tm->tm_sec+ 1

小数点后面的部分,注意不够三位还是前面填充0 tv.tv_sec/1000

linux怎么查看当前系统时间

date命令的功能是显示和设置系统日期和时间。该命令的一般格式为: date [选项]显示时间格式(以+开头,后面接格式)
date设置时间格式命令中各选项的含义分别为:-d datestr,--date datestr显示由datestr描述的日期-s datestr,--set datestr设置datestr描述的日期-u,--universal显示或设置通用时间时间域% H小时(00~ ]# date-d next-day+%Y%m%d
20060328
[root@linuxso~ ]# date-d yesterday+%Y%m%d
20060326
[root@linuxso~ ]# date-d last-month+%Y%m
200602
[root@linuxso~ ]# date-d next-year+%Y
2007------------------------------------------而FreeBSD则不同;举例如下:
For FreeBSD
[root@linuxso~]# date-v-1m+%Y%m%d
20060227
[root@linuxso~]# date+%Y%m%d
20100107上面是今天的日期20100107
[root@linuxso~]# date-d"4 days ago"+%Y%m%d
20100103上面是四天前的日期 [root@linuxso~]# date-d"-2 days ago"+%Y%m%d
20100109上面是两天后的日期
[root@linuxso~]# date-d"1 year ago"+%Y%m%d
20090107上面是一年前的日期

阅读剩余
THE END