728x90
C언어에서 기본적으로 시간을 구할 때 time.h 를 사용해서 원하는 형식의 값을 구할 수 있습니다
기존에 해당 라이브러리를 이용해서 제가 시간을 구한 방식은 다음과 같은 방법을 통해 사용했는데
기본적으로 time.h에서 제공하는 strftime 함수를 이용하면 제가 사용했던 방법보다 훨씬 간단하면서
이번에 문제가 되었던 시간이나 날짜의 형식에 0이 붙는 방식으로 출력이 가능합니다.
예를 들어 제가 이번에 문제가 되었던 이유는 시간 출력 시 오전 9시 25분을 예로 들면
9:25:0
위와 같은 결과가 출력이 되었는데 업체에서는 다음과 같은 형식을 원했습니다
09:25:00
이를 해결할 수 있는 게 strftime 함수입니다
기존 사용 방식
include <time.h>
unsigned char ldate[64];
unsigned char ltime[64];
struct tm* t;
time_t base_time = time(NULL);
t = localtime(&base);
sprintf(ldate,"%d-%d-%d", t->tm_year+1900, t->tm_mon+1, t->tm_mday);
sprintf(ltime,"%d:%d", t->tm_hour, t->tm_min);
해당 방법은 예전부터 많이 사용되는 방식으로
오래된 서버나 오래된 프로그램을 인수인계받게 되면 종종 볼 수 있습니다
명칭 자체가 직관적이기 때문에 내가 원하는 방식으로 시간 값을 만들 수 있다는 장점이 있습니다
변경한 방식
include <time.h>
unsigned char ldate[64];
unsigned char ltime[64];
struct tm* t;
time_t base_time = time(NULL);
t = localtime(&base);
strftime(ldate,64,"%Y-%m-%d",t);
strftime(ltime,64,"%I:%M:%S",t);
해당 strftime은 위의 방식과 다르게 인자로 t만 넘겨주고 형식을 만들어주기만 하면 됩니다
확실히 내가 형식에 할당하는 시간 값이 무엇인지 지정하지 않아도 되기 때문에 프로그램을
만지는 사람으로서는 정말 간편한 방법입니다.
strftime의 형식은 다음과 같이 사용할 수 있습니다
형식 | 내용 | 출력 |
%a | 축약 형식의 요일 | Sun |
%A | 요일 | Sunday |
%b | 축약 형식의 월 | Jan |
%B | 월 | January |
%Y | 연도 | 2022 |
%y | 두자리 연도 | 22 |
%d | 일 | 05 |
%m | 월 | 08 |
%I | 12시간 (01~12) | 12 |
%H | 24시간 (01~23) | 23 |
%M | 분 (00~59) | 05 |
%S | 초 (00~59) | 58 |
많이 쓰이는 것들을 위에 정리해 보았습니다 그 이상의 형태가 필요하면 아래 링크를 참고해주세요
https://cplusplus.com/reference/ctime/strftime/
728x90
반응형
'언어 > C언어' 카테고리의 다른 글
[C언어] memcpy 함수 사용법 (0) | 2023.10.27 |
---|---|
[c언어] 문자열을 Int형 정수로 변환하는 atoi함수 (4) | 2022.08.30 |
음수 표현 2의 보수 (4) | 2022.05.25 |
json-c 라이브러리 사용 방법 (6) | 2022.05.16 |
메모리 초기화 memset 함수 (8) | 2022.02.07 |
댓글