それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

C言語で時刻を計算する

UNIXの時刻はPOSIXタイムで、協定世界時(UTC)の1970年1月1日午前0時0分0秒からの経過秒数*1で表現されるのです。
それなら単純にintの足し算で表現できるんじゃ・・・とおもったけどtime_tを経由するので意外とパパっと出来なかった。

UNIXのINT秒を足し算して日付(時刻)を進める。

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

int main(){

 time_t target_time,temp_time;
 struct tm* target_time_tm;
 char*  time_string;
 int    string_length=20;
 int i;

 time_string = (char*)malloc(string_length*sizeof(char));
 time(&target_time);
 for(i=0; i<20;i++){
    temp_time = target_time + 60*60*24*i;
    target_time_tm = localtime(&temp_time);
    strftime(time_string, string_length, "%Y年%m月%d日",  target_time_tm);
    fprintf(stdout, "%s\n", time_string);
 }
}


C言語の教科書を読まずに考えたのだけれど、もっと良いやり方あるのかな。。。

*1:閏秒を加味しない