Получить текущее время в C
Я хочу получить текущее время моей системы. Для этого я использую следующий код в C:
time_t now;
struct tm *mytime = localtime(&now);
if ( strftime(buffer, sizeof buffer, "%X", mytime) )
{
printf("time1 = "%s"n", buffer);
}
проблема в том, что этот код дает некоторое случайное время. Кроме того, случайное время отличается каждый раз. Мне нужно текущее время моей системы.
8 ответов:
Копировать-Вставить из здесь:
/* localtime example */ #include <stdio.h> #include <time.h> int main () { time_t rawtime; struct tm * timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); printf ( "Current local time and date: %s", asctime (timeinfo) ); return 0; }
(просто добавьте "void" в список аргументов main (), чтобы это работало в C)
инициализации
now
переменной.time_t now = time(0); // Get the system time
The
localtime
функция используется для преобразования значения времени в прошлоtime_t
доstruct tm
, он фактически не извлекает системное время.
простой способ:
#include <time.h> #include <stdio.h> int main(void) { time_t mytime = time(NULL); char * time_str = ctime(&mytime); time_str[strlen(time_str)-1] = ''; printf("Current Time : %s\n", time_str); return 0; }
чтобы расширить ответ от @mingos выше, я написал ниже функцию для форматирования моего времени в определенный формат ([dd mm yyyy hh:mm:ss]).
// Store the formatted string of time in the output void format_time(char *output){ time_t rawtime; struct tm * timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); sprintf(output, "[%d %d %d %d:%d:%d]",timeinfo->tm_mday, timeinfo->tm_mon + 1, timeinfo->tm_year + 1900, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); }
подробнее о
struct tm
можно найти здесь.
#include<stdio.h> #include<time.h> void main() { time_t t; time(&t); printf("\n current time is : %s",ctime(&t)); }
ребята, вы можете использовать эту функцию, чтобы получить текущее местное время. если вы хотите gmtime, то используйте функцию gmtime вместо localtime. ура
time_t my_time; struct tm * timeinfo; time (&my_time); timeinfo = localtime (&my_time); CCLog("year->%d",timeinfo->tm_year+1900); CCLog("month->%d",timeinfo->tm_mon+1); CCLog("date->%d",timeinfo->tm_mday); CCLog("hour->%d",timeinfo->tm_hour); CCLog("minutes->%d",timeinfo->tm_min); CCLog("seconds->%d",timeinfo->tm_sec);
#include <stdio.h> #include <time.h> void main() { time_t t; time(&t); clrscr(); printf("Today's date and time : %s",ctime(&t)); getch(); }
ребята, у меня есть новый способ получить системное время. хотя его длинный и полон глупых работ, но таким образом вы можете получить системное время в целочисленном формате.
#include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char hc1,hc2,mc1,mc2; int hi1,hi2,mi1,mi2,hour,minute; system("echo %time% >time.txt"); fp=fopen("time.txt","r"); if(fp==NULL) exit(1) ; hc1=fgetc(fp); hc2=fgetc(fp); fgetc(fp); mc1=fgetc(fp); mc2=fgetc(fp); fclose(fp); remove("time.txt"); hi1=hc1; hi2=hc2; mi1=mc1; mi2=mc2; hi1-=48; hi2-=48; mi1-=48; mi2-=48; hour=hi1*10+hi2; minute=mi1*10+mi2; printf("Current time is %d:%d\n",hour,minute); return 0; }