>source

나는 사용하고 싶다 <time.h> 현재 시간을 확인할 수있는 함수를 만든 다음 특정 국가 (예 : US-USA, CN-Canada, GB-UK)에 대한 사용자 입력을 요청합니다.

그래서이 기능을 만들었습니다.

1  #include <time.h>
2  #include <string.h>
3 
4  char *getTimeAndZone(char *country)
5  {
6      time_t currentTime = time(NULL);
7      struct tm time = *localtime(&currentTime);
8      if (strcmp(country, "JP") == 0) // Japan
9      {
10         time.tm_hour += 9;
11     }
12     else
13     {
14         printf("No such country.\n");
15         return NULL;
16     }
17     return strftime(char buff[256], 20, "%H:%M:%S", localtime(&time));
18 }

Added numbers to indicate line number.

2 개의 오류로 인해 실제로 작동하지 않지만 계획중인 내용을 잘 보여줍니다.

이 일을 어떻게 개선 할 수 있습니까? GMT + 0 (GMT + 8)에서 시간을 어떻게 설정합니까?

궁금 하시다면 수도의 시간대를 찾고 있습니다. 함수는 원산지 국가의 약어를 필요로하며 수도의 시간대를 가져올 수 있어야합니다.

오류를 알고 싶다면 여기로 가십시오.
  • expected expression 17 행 : 오류 char buff[256]
  • incompatible pointer types passing 'struct tm *' to parameter of type 'const time_t *' (aka 'const long *') 17 행부터
  • 답변 # 1

    당신은 사용하고 있습니다 return strftime(char buff[256], 20, "%H:%M:%S", localtime(&time)); 이것은 구조체이지만 char * 함수에 있습니다. 해결 방법은 아래 예를 참조하십시오. 나보다 더 나은 솔루션을 찾을 수 있지만이 솔루션이 작동합니다.

       char *getTimeAndZone(char *country);
    int main(int argv, char** argc)
    {
        printf("%s", getTimeAndZone("JP"));
    }
    char *getTimeAndZone(char *country)
    {
        time_t current_time;
        struct tm *new_time;
        char buffer[80];
        time(&current_time);
        new_time = localtime(&current_time);
        if(strcmp(country, "JP")==0){
            new_time->tm_hour+=9;
        }
        strftime(buffer,80,"%H:%M:%S\n", new_time);
        static char retval[150];
        strcpy(retval, "The time is ");
        strcat(retval, buffer);
        return retval;  
    }
    
    

  • 이전 java - 현재 요청에서 Feign 인터셉터를 통해 feign-client에 동적 헤더 값을 추가하는 방법은 무엇입니까?
  • 다음 c# - 활동 간 데이터 전달 Xamarin Android