C로 현재 시간 가져 오기


97

내 시스템의 현재 시간을 알고 싶습니다. 이를 위해 C에서 다음 코드를 사용하고 있습니다.

time_t now;
struct tm *mytime = localtime(&now); 
if ( strftime(buffer, sizeof buffer, "%X", mytime) )
{
    printf("time1 = \"%s\"\n", buffer);
}

문제는이 코드가 임의의 시간을 제공한다는 것입니다. 또한 임의의 시간은 매번 다릅니다. 내 시스템의 현재 시간을 원합니다.


답변:


126

여기 에서 복사 붙여 넣기 :

/* 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;
}

(C에서 작동하려면 main () 인수 목록에 "void"를 추가하십시오.)


다른 방법으로 수행하는 방법을 아십니까? string to tm *?
Goaler444

6
나는 늦은 아마 조금 그리고 당신은 가능성이 지금 그것을 알아 낸하지만, 당신이 사용하는 것이 알 strptime의 기능을 time.h 변환하는 방법 char *struct tm
KingRadical

1
asctime ()은 문자열 끝에 \ n을 남깁니다.
h7r 2014 년

4
위의 코드는 중복됩니다. asctime (localtime (& rawtime))은 단일 ctime (& rawtime) 함수 호출과 동일합니다.
duleshi

1
참고 - 당신은하지 않습니다 필요time_t 에 대한 인수로 객체를 time(). 퍼팅 NULL, 0매개 변수로 등은 현재 시간을 반환하기 위해 노력하고 있습니다.
Super Cat

68

now변수를 초기화하십시오 .

time_t now = time(0); // Get the system time

localtime함수는 전달에 시간 값을 변환하는 데 사용됩니다 time_tA를을 struct tm, 실제로 시스템 시간을 검색하지 않습니다.


35

쉬운 방법:

#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] = '\0';
    printf("Current Time : %s\n", time_str);

    return 0;
}

1
이것은 끝에 추가 개행을 추가합니다.
James Ko

없이 컴파일하지 않습니다#include <string.h>
Deanie dec

13

위의 @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 확인할 수 있습니다 .


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

void main()
{
    time_t t;
    time(&t);
    printf("\n current time is : %s",ctime(&t));
}

6

이 기능을 사용하여 현재 현지 시간을 얻을 수 있습니다. gmtime을 원한다면 localtime 대신 gmtime 함수를 사용하십시오. 건배

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);

2

날짜없이 시간 만 있으면됩니다.

  time_t rawtime;
  struct tm * timeinfo;
  time( &rawtime );
  timeinfo = localtime( &rawtime );
  printf("%02d:%02d:%02d", timeinfo->tm_hour, timeinfo->tm_min, 
    timeinfo->tm_sec);

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

void main()
{
    time_t t;
    time(&t);
    clrscr();

    printf("Today's date and time : %s",ctime(&t));
    getch();
}

순수한 텍스트를 사용하여 솔루션에 대해 조금 자세히 설명해 주시겠습니까?
Magnilex 2015 년

2
void main()이어야합니다 int main(void).
Keith Thompson

-9

시스템 시간을 얻는 새로운 방법이 있습니다. 길고 어리석은 작업으로 가득 차 있지만 이런 식으로 시스템 시간을 정수 형식으로 얻을 수 있습니다.

#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;
}

7
Linux의 시간 라이브러리와 시스템 호출은 놀랍지 않지만 그렇다고하더라도 쉘 명령으로 이동하여 구문 분석하지 말고 사용하고 싶을 것입니다. time과 ctime 및 rtc에 대해서는 man 페이지를 참조하십시오.
Dana

18
이것은 끔찍합니다.
Manuel Reis 2015 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.