- 时间相关命令
很多 shell 脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类 UNIX 系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970 年 1 月 1 日 0 时 0 分 0 秒起流逝的秒数。(时间纪元的原因☞)
设定时间
date -s
date -s 20161226
date -s 01:01:01
date -s "01:01:01 2016-12-26"
date -s "01:01:01 20161226"
date -s "2016-12-26 01:01:01"
date -s "20161226 01:01:01"
- 描述
Linux下使用struct tm结构体描述时间,如下:
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
};
time_t time(time_t *t);
char *ctime(const time_t*timep)
struct tm *gmtime(const time_t *timep);
char *asctime(const struct tm *tm)
struct tm *localtime(const time_t *timep);
time 函数会返回从公元 1970 年 1 月 1 日的 UTC 时间从 0 时 0 分 0 秒算起到现在所经过的秒数。如果t并非空指针的话,此函数也会将返回值存到t指针所指的内存。
ctime函数将日历时间转化为本地时间的字符串形式.
gmtime函数将日历时间转换为格林威治时间.
asctime函数将格林威治时间转化为字符串.
localtime函数将日历时间转换为本地时间.
int main()
{
/*获取日历时间,从1970-1-1 0点到现在的秒数.*/
time_t n=time(NULL);
printf("n=%d\n",n);
/*将日历时间转换为格林威治时间*/
struct tm*p=gmtime(&n);
printf("%4d-%d-%d %d:%d:%d\n",1900+p->tm_year,1+p->tm_mon,p->tm_mday,p->tm_hou,p->tm_min,p->tm_sec);
/*将日历时间转换为本地时间*/
p=localtime(&n);
printf("%4d-%d-%d %d:%d:%d\n",1900+p->tm_year,1+p->tm_mon,p->tm_mday,p->tm_hou,p->tm_min,p->tm_sec);
return 0;
}