梅达尔多 发表于 2017-11-7 11:32:49

linux打印时间

#include <stdio.h>
#include <time.h>
#include <unistd.h>// uni sleep
#include <string.h>/**
* 取得 linux 时间,然后打印
*/
int main(int argc, char **argv)
{    time_t lt;
    char *p = NULL;
    while(1)   {
      lt = time(NULL);// 70 年的相对值
      p =ctime(&lt);//传替地址时间 处理它,并反回地址
      p='\0';// 把最后一个回车符 替换成 '\0'
      printf("%s\r",p);
       //回车 不换行// 这个函数 有IO 缓冲区的。。相当于文件 IO 输入输出的方式。。内存,文件,显示器
       // 第一种 放在缓冲区的。。这个缓冲数据什么时候 放到屏幕上来,原来 每次 遇到换行时,就显示到屏幕
       // 第二种 当用usleep 的时候 50毫秒的时候没有回车,它是隔一段时间刷了一段就出来了,也就是等到 缓冲区满了
       // 自动送到屏幕去了。
       // 第三种方案,用户自定义 ,当往缓冲区 写一次数据到缓冲区时,我对流 清仓工作。用fflush(stdout) 来清仓写到屏幕去。
       fflush(stdout);
       sleep(1);
      // usleep(10000);
    }
    return 0;
}

梅达尔多 发表于 2017-11-7 11:34:26

附上一篇关于linux 时间的帖子:http://blog.csdn.net/lupyhlp0925/article/details/37933389

梅达尔多 发表于 2017-11-7 11:35:52

上面那种方式,打印的时间不是常见的年月日时分秒。
另外一种方式:
int main()
{
    char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
    time_t timep;
    struct tm *p;
   
    time(&timep); /*获得time_t结构的时间,UTC时间*/
    p = localtime(&timep); /*转换为struct tm结构的当地时间*/
    printf("%d/%d/%d ", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday);
    printf("%s %d:%d:%d ", wday, p->tm_hour, p->tm_min, p->tm_sec);
    return 0;
}
页: [1]
查看完整版本: linux打印时间