[Armadillo:07698] Re: 時刻情報がlocaltime()を使ってもJSTにならない

Chris McHarg email@hidden
2011年 11月 4日 (金) 20:00:21 JST


> tzname[0]とtimezoneが私のAramdilloの環境ですと
> UTCになっていました。

以下のようなテスト用の小さいプログラムを作って
確認してみるのはいかがでしょうか。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <time.h>

int main(void) {

	char date_string[16];
	char time_string[16];
	struct timespec ts;
	struct tm *tm_struct;
	int ret;

	ret = clock_gettime(CLOCK_REALTIME, &ts);
	if (ret != 0) {
		fprintf(stderr, "clock_gettime() failed: %s\n",
			strerror(errno));
		exit(1);
	}

	tm_struct = localtime(&ts.tv_sec);
	if (tm_struct == NULL) {
		fprintf(stderr, "localtime() failed\n");
		exit(1);
	}

	sprintf(date_string, "%04d/%02d/%02d",
		tm_struct->tm_year+1900,
		tm_struct->tm_mon+1,
		tm_struct->tm_mday);

	sprintf(time_string, "%02d:%02d:%02d.%03ld",
		tm_struct->tm_hour,
		tm_struct->tm_min,
		tm_struct->tm_sec,
		(ts.tv_nsec/1000000)%1000);

	printf("TZ=%s\n", getenv("TZ"));
	printf("%s %s\n", date_string, time_string);

	exit(0);
}



armadillo メーリングリストの案内