localtime_sやgmtime_sを使ってtm構造体を使うという話。
#include "stdafx.h"
#include <time.h>
int main(void)
{
/*構造体そのもの*/
struct tm newtime, gmt;
__time64_t long_time;
errno_t err;
_time64(&long_time);
err = localtime_s(&newtime, &long_time);
printf("JST: %.2d:%.2d:%.2d\n", newtime.tm_hour, newtime.tm_min, newtime.tm_sec);
err = gmtime_s(&gmt, &long_time);
printf("GMT: %.2d:%.2d:%.2d\n", gmt.tm_hour, gmt.tm_min, gmt.tm_sec);
printf("日付: %.2d/%.2d/%.2d\n\n", newtime.tm_year + 1900, newtime.tm_mon + 1, newtime.tm_mday);
のように、tm構造体そのものを宣言してやれば、ドット演算子を使ってちゃんと動作するが、
/*構造体ポインタ*/
struct tm *newtime00, *gmt00;
__time64_t *long_time00;
errno_t err00;
_time64(long_time00);
err00 = localtime_s(newtime00, long_time00);
printf("JST: %.2d:%.2d:%.2d\n", newtime00->tm_hour, newtime00->tm_min, newtime00->tm_sec);
err00 = gmtime_s(gmt00, long_time00);
printf("GMT: %.2d:%.2d:%.2d\n", gmt00->tm_hour, gmt00->tm_min,
gmt00->tm_sec);
printf("日付: %.2d/%.2d/%.2d\n\n", newtime00->tm_year + 1900,
newtime00->tm_mon + 1, newtime00->tm_mday);
return 0;
}
このように、tm構造体のポインタを宣言すると、アロー演算子を使うところまではいいものの、初期化されてない変数のエラーが出てしまい動作しない。
結局、
tm構造体のポインタを使ってlocaltime_s, gmtime_sを使うという懸案事項は未だ成功せず。
#include "stdafx.h"
#include <time.h>
int main(void)
{
/*構造体そのもの*/
struct tm newtime, gmt;
__time64_t long_time;
errno_t err;
_time64(&long_time);
err = localtime_s(&newtime, &long_time);
printf("JST: %.2d:%.2d:%.2d\n", newtime.tm_hour, newtime.tm_min, newtime.tm_sec);
err = gmtime_s(&gmt, &long_time);
printf("GMT: %.2d:%.2d:%.2d\n", gmt.tm_hour, gmt.tm_min, gmt.tm_sec);
printf("日付: %.2d/%.2d/%.2d\n\n", newtime.tm_year + 1900, newtime.tm_mon + 1, newtime.tm_mday);
のように、tm構造体そのものを宣言してやれば、ドット演算子を使ってちゃんと動作するが、
/*構造体ポインタ*/
struct tm *newtime00, *gmt00;
__time64_t *long_time00;
errno_t err00;
_time64(long_time00);
err00 = localtime_s(newtime00, long_time00);
printf("JST: %.2d:%.2d:%.2d\n", newtime00->tm_hour, newtime00->tm_min, newtime00->tm_sec);
err00 = gmtime_s(gmt00, long_time00);
printf("GMT: %.2d:%.2d:%.2d\n", gmt00->tm_hour, gmt00->tm_min,
gmt00->tm_sec);
printf("日付: %.2d/%.2d/%.2d\n\n", newtime00->tm_year + 1900,
newtime00->tm_mon + 1, newtime00->tm_mday);
return 0;
}
このように、tm構造体のポインタを宣言すると、アロー演算子を使うところまではいいものの、初期化されてない変数のエラーが出てしまい動作しない。
結局、
tm構造体のポインタを使ってlocaltime_s, gmtime_sを使うという懸案事項は未だ成功せず。