1.date命令
日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类 UNIX 系
统中,日期被存储为一个整数,其大小为自世界标准时间( UTC) 1970 年 1 月 1 日 0 时 0 分 0 秒起流逝的秒数。使用 date 命令可以查看系统时间。
2.Linux 下的时间结构体
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; /*取值区间为[0,365],其中 0 代表 1 月 1 日*/
int tm_isdst; /*实行夏令时为正,不实行为0,不了解情况时,为负*/
}
time 函数会返回从公元 1970 年 1 月 1 日的 UTC 时间从 0 时 0 分 0 秒算起到现在所经过的秒数。
ctime 函数将将日历时间转化为本地时间的字符串形式。
gmtime 函数将日历时间转换为格林威治时间即世界标准时间。
asctime 函数将格林威治时间转化为字符串。
localtime 函数将日历时间转换为本地时间。
3.代码
#include "My_time.h"
//测试本地时间函数
void Test_Localtime(void)
{
struct tm * time_str = NULL;
time_t tmp;
tmp = time(&tmp);
if(tmp < 0 )
{
perror("time");
return ;
}
time_str = localtime(&tmp);
printf("现在时间是 %d年-%d月-%d日-%d时-%d分-%d秒 星期%d\n",\
time_str->tm_year+1900,time_str->tm_mon+1,\
time_str->tm_mday,time_str->tm_hour,\
time_str->tm_min,time_str->tm_sec,\
time_str->tm_wday
);
}
// 测试格林威治时间函数
void Test_Gmtime(void)
{
struct tm * time_str = NULL;
time_t tmp;
tmp = time(&tmp);
if(tmp < 0 )
{
perror("time");
return ;
}
time_str = gmtime(&tmp);
printf("现在时间是 %d年-%d月-%d日-%d时-%d分-%d秒 星期%d\n",\
time_str->tm_year+1900,time_str->tm_mon+1,\
time_str->tm_mday,time_str->tm_hour,\
time_str->tm_min,time_str->tm_sec,\
time_str->tm_wday
);
}
//用时间结构体转字符串时间(英文)
void Test_Asctime(void)
{
char * asc_time=NULL;
struct tm * time_str = NULL;
time_t tmp;
tmp = time(&tmp);
if(tmp < 0 )
{
perror("time");
return ;
}
time_str = localtime(&tmp);
asc_time = asctime(time_str);
printf("%s",asc_time);
}
//测试日历时间转字符串时间
void test_Ctime(void)
{
char * time_str=NULL;
time_t tmp;
tmp=time(&tmp);
time_str = ctime(&tmp);
printf("%s",time_str);
}
#include "main.h"
#include "My_time.h"
int main(int argc,char * argv[])
{
Test_Localtime();//测试本地时间函数
Test_Gmtime(); // 测试格林威治时间函数
Test_Asctime(); //用时间结构体转字符串时间(英文)
test_Ctime(); //测试日历时间转字符串时间
return 0;
}
结果: