如何使用gettime()获取C中的当前时间?

时间:2017-08-28 07:43:42

标签: c timestamp gettime

我们需要使用gettime()来获取当前时间。我正在尝试打印当前时间但错误:

  

错误:'t'的存储大小未知

发生。我不知道如何解决这个问题。这是代码:

#include<stdio.h>
#include<dos.h>

int main(){

   struct time t;

   gettime(&t);

   printf("%d:%d:%d", t.ti_hour,t.ti_min,t.ti_sec);

   getch();
   return 0;
}

3 个答案:

答案 0 :(得分:1)

不清楚是要获取时间还是只是打印时间。

对于第二种情况,很少有传统方法可以提供格式化时间(asctime,ctime)。但是这些可能不符合要求

更灵活的选择是基于time / localtime_r中的数据使用strftime。 strftime支持GNU日期可用的许多转义符(%Y,...)。

#include <stdio.h>
#include <time.h>

void main(void)
{

   time_t now = time(NULL) ;
   struct tm tm_now ;
   localtime_r(&now, &tm_now) ;
   char buff[100] ;
   strftime(buff, sizeof(buff), "%Y-%m-%d, time is %H:%M", &tm_now) ;
   printf("Time is '%s'\n", buff) ;
}

答案 1 :(得分:0)

获取本地时间的标准C函数只是time,包含在标题time.h中

取自here

的示例
/* time example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, struct tm, difftime, time, mktime */

int main ()
{
  time_t timer;
  struct tm y2k = {0};
  double seconds;

  y2k.tm_hour = 0;   y2k.tm_min = 0; y2k.tm_sec = 0;
  y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1;

  time(&timer);  /* get current time; same as: timer = time(NULL)  */

  seconds = difftime(timer,mktime(&y2k));

  printf ("%.f seconds since January 1, 2000 in the current timezone", seconds);

  return 0;
}

有关不同时间格式的更多信息:

http://www.cplusplus.com/reference/ctime/mktime/

http://www.cplusplus.com/reference/ctime/localtime/

答案 2 :(得分:0)

好吧,您正在尝试使用DOS.H库,因此由于DOS.time.h和ctime库不适用于此特定问题,因为DOS.H是专有的C库,您不能在任何其他C语言中使用它(C ++或C#),请在阅读本文后阅读该库,这样您就可以清楚地看到我在说什么,因此在DOS.H库中是一个STRUCT,可用于保存所有时间变量,这是小时,分钟,秒,所以我们要做的第一件事就是声明一个变量,该变量允许我们保存这种类型的数据:

结构时间tm;

一旦执行此操作,就可以使用库中的gettime()函数,以将que值保存在我们可以访问的位置:

gettime(&tm);

最后,要打印出o,并在任何需要的地方使用此数据,您需要获取结构的每个寄存器:

printf(“系统时间为:%d:%d:%d \ n”,tm.ti_hour,tm.ti_min,tm.ti_sec);

检查此代码:

#include<stdio.h>
#include<dos.h>
#include<conio.h>

int main()
{
struct date fecha;
struct time hora;
union REGS regs;

getdate(&fecha);
printf("La fecha del sistema es: %d / %d / %d\n",fecha.da_day,fecha.da_mon,fecha.da_year);

regs.x.cx = 0x004c;
regs.x.dx = 0x4b40;
regs.h.ah = 0x86; /* 004c4b40h = 5000000 microsegundos */

int86(0x15,&regs,&regs); /* Interrupcion 15h suspension de sistema  */

gettime(&hora);
printf("la hora del sistema es: %d : %d : %d\n",hora.ti_hour,hora.ti_min,hora.ti_sec);

getche();
clrscr();
return 0;
}