date命令的功能是显示和设置系统日期和时间。 该命令的一般格式为: date [选项] 显示时间格式(以+开头,后面接格式) date 设置时间格式 命令中各选项的含义分别为: -d datestr, --date datestr 显示由datestr描述的日期 -s datestr, --set datestr 设置datestr 描述的日期 -u, --universal 显示或设置通用时间 时间域 % H 小时(00 ~ ]# date -d next-day +%Y%m%d20060328[root@linuxso ~ ]# date -d yesterday +%Y%m%d20060326[root@linuxso ~ ]# date -d last-month +%Y%m200602[root@linuxso ~ ]# date -d next-year +%Y2007------------------------------------------而FreeBSD则不同;举例如下:For FreeBSD[root@linuxso ~]# date -v -1m +%Y%m%d 20060227[root@linuxso ~]# date +%Y%m%d20100107上面是今天的日期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上面是一年前的日期
RTC时间 *** 作:
1rtc时间是由rtc硬件控制的,所以在linux中想要修改和获取rtc时间就只能通过驱动的接口来获取和修改。
intrtc_test(void)
{
structrtc_timertc;
intfd=-1;
intret=-1;
fd=open("/dev/rtc0",O_RDWR);
if(fd<0){
return-1;
}
ret=ioctl(fd,RTC_RD_TIME,&rtc);
if(ret<0){
return-1;
}
printf("\nCurrentRTCdata/timeis%d-%d-%d,%02d:%02d:%02d\n",rtctm_mday,rtctm_mon+1,
rtctm_year+1900,rtctm_hour,rtctm_min,rtctm_sec);
ret=ioctl(fd,RTC_SET_TIME,&rtc);
if(ret<0){
return-1;
}
return0;
}
2除了上面这种方式 *** 作rtc时间以外,linux中也有一个命令可以简化rtc时间 *** 作,hwclock,比如,可以通过system("hwclock-w");系统调用来把xtime设置到rtc硬件。
墙上时间(realtime、xtime):
linux系统中主要使用的就是xtime,它是系统运行的基础,很多程序都是依赖于xtime来运行的,接下来将介绍将如何 *** 作xtime。
1获取、设置微秒级别的时间:
#include
#include
structtimeval
{
inttv_sec;
inttv_usec;
};
intgettimeofday(structtimevaltv,structtimezonetz);
intsettimeofday(conststructtimevaltv,conststructtimezonegz);
功能描述:
gettimeofday()获取当前时间,有tv指向的结构体返回。
settimeofday()把当前时间设成由tv指向的结构体数据。当前地区信息则设成tz指向的结构体数据。
2获取秒级别的时间
typedeflongtime_t;
time_ttime(time_tt);
如果t是non-null,它将会把时间值填入t中
3内核26版本后新增的clockapi接口
获取纳秒级别的时间
structtimespec{
time_ttv_sec;/秒s/
longtv_nsec;/纳秒ns/
};
intclock_getres(clockid_tclk_id,structtimespecres);
intclock_gettime(clockid_tclk_id,structtimespectp);
intclock_settime(clockid_tclk_id、conststructtimespectp);
编译连接时采用-lrt才能编译通过。
clk_id可选参数:
CLOCK_REALTIME
系统全局的实时时钟设置此时钟需要合适的权限
CLOCK_MONOTONIC
只能被读取,无法被设置,表示monotonic时间起点
CLOCK_PROCESS_CPUTIME_ID
从cpu每进程的高分辨率计时器
CLOCK_THREAD_CPUTIME_ID
线程的特定cpu时间时钟
系统启动时,会首先从rtc中读取rtc时间,并设置给xtime,而当ntp对系统时间进行更新时,首先设置xtime,然后调用hwclock设置到rtc硬件中。xtime根据需要的精度,可以通过上面几个接口来选择使用。
在 expect 中可以通过调用 Tcl 内置的 clock 模块来获取当前时间。具体可以使用以下命令来获取当前时间并输出到终端:
set now [clock format [clock seconds] -format "%Y-%m-%d %H:%M:%S"]
puts "当前时间为: $now"
上述代码中,首先使用 clock seconds 命令获取当前时间戳,然后通过 clock format 命令将时间戳格式化为指定的日期时间字符串。其中,-format 参数用于指定日期时间字符串的格式,例如 %Y-%m-%d %H:%M:%S 表示年月日时分秒。最后使用 puts 命令将当前时间字符串输出到终端。
没有完整程序, 不过能提供一点资料
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 <stdioh>
#include <timeh>
#include <sys/timeh>
#include<unistdh>
//这四个不一定够用了
struct timeval tv;
struct timezone tz;
struct tm p_tm;
//变量没有初始化习惯不好,不要学
gettimeofday(&tv, &tz);
p_tm = gmtime( (const time_t )&tvtv_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 tvtv_sec/1000
以上就是关于linux怎么查看当前系统时间全部的内容,包括:linux怎么查看当前系统时间、linux实时时间 xtime怎么获取并使用、Linux系统里的expect里面怎么打印当前时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)