tm구조체에서요...
글쓴이: samdochen / 작성시간: 금, 2004/01/09 - 7:48오후
void write_date_time(void) { unsigned long hour, min, sec, year, month, day; struct tm *tm_ptr, time_struc; time_t the_time; hour = 15; min = 35; sec = 55; year = 2004; month = 01; day = 07; (void) time(&the_time); tm_ptr = localtime(&the_time); time_struc.tm_hour = hour; time_struc.tm_min = min; time_struc.tm_sec = sec; time_struc.tm_year = year; time_struc.tm_mon = month; time_struc.tm_mday = day; tm_ptr = &time_struc; the_time = mktime(tm_ptr); strftime(buffer, 256, "%Y/%m/%d,%H:%M:%S,%a", tm_ptr); printf("time : %s\n",buffer); }
이렇게 하고..
시간을 확인했을때,
제가 넣은 2004/01/07 15:35:55 이런값으로 바뀌지를 않네요.
이렇게 제가 구조체에 값을 집어넣고
저장할수 있는 방법은 없나요?
시간이 바뀌지가 않아요.
시간을 바꾸고 싶거든요
Forums:
시간이 바뀌지 않는다는 의미가 머죠?? strftime()에서 말씀하
시간이 바뀌지 않는다는 의미가 머죠??
strftime()에서 말씀하신, 2004/01/07 15:35:55를 buffer에 넣고 싶다는 건가요??
그렇다면, man page를 보셔야 할듯.. :cry:
맨페이지를 보면, 연도는 1900이후의 값을, 월은 0부터 시작을 하고 있는것을 보실 수 있을껍니다.
--------------------------
Donghyun Jung
buffer에 그 값은 들어가거든요.그런데 버퍼에 값넣기전에 보시
buffer에 그 값은 들어가거든요.
그런데 버퍼에 값넣기전에 보시면 제가 tm구조체에 값을 집어넣잖아요.
이렇게 구조체에 값을 집어넣고...
컴파일한다음에 다시 시간을 읽어보면 제가 구조체에 넣은값이
나오질 않거든요.
구조체에 집어넣고 저장을 해야하는것인지..
strptime()을 쓰면 ssanf()역할을 한다는데.
이방법말고 또 없나요???
[quote="악기와깡다구"]buffer에 그 값은 들어가거든요.
이런 방법으로 대입해도 값은 제대로 나옵니다. 어떻게 나오지 않는다는건지 궁금하네요.
(물론 위에서 dhjung님이 지적하신 대로 연도와 월은 정확히 쓰셔야합니다)
따로 문제가 될 수 있는 부분은, 현재 프로그램상에서 time_struc을 초기화하지 않았다는 점입니다. tm 구조체에 남은 부분의 쓰레기값이 영향을 미칠수도 있습니다.
신텍스 문제군요...[code:1]tm_ptr = localtim
신텍스 문제군요...
이렇게 쓰셨는데... 결국 localtime에 의해 구해진 값은 버린결과.. -_-
localtime에 의해 나온 값을 나중에 쓰기위해서 보관해야 한다면
정도로 쓰셔야 할 것 같은데요.
Do you think that's the air you are breathing now?
이걸 원하신건지..
저도 한동안 삽질했던...부분이었는데요
2004년을 저장할려면 2004-1900을 해야되드라구요
1900년 이후로 경과한 년도...머 이런 의미겠죠
아래에 간단한 함수를 만들어보았습니다.
일단 time_t 타입의 데이타만 만들어 내면
strftime()나 ctime(), asctime() 머 이런 함수로
원하는 포맷으로 시간을 만들어 내실수 있을것 같네요
순서는
1. 문자열로된 시간을 struct tm 타입의 시간으로 바꾼다.
2. struct tm을 mktime()으로 time_t타입으로 바꾼다.
3. strftime()를 호출한다.
중요한 부분은 1번과 2번 과정이겠구요
아래는 그 부분입니다.
잘못된 것이 있으면 답변주시길..
[quote="운형"]신텍스 문제군요...[code:1]tm_pt
printf로 각 변수들을 불러와서 확인해보면
넣은 값들이 제대로 나오지만...
date명령어로 사용해서 확인해보면...
시간은 바뀌어 있지 않던데요..
잘 몰라서 그러는데, date명령어로 확인해서 나오는 값을
바꿔 주려면 tm구조체를 건드리는게 아닌가요
[code:1]System Calls
아마도 원하시는게 이거인것 같은데...-_-ㅋ
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
감사합니다..stime() ...왜 그냥 간과하고 지나갔는지..
감사합니다..
stime() ...왜 그냥 간과하고 지나갔는지..
제 불찰이었네요..^^
댓글 달기