お世話になります。
現在、2019年1月1日0時0分からある日数が経過した時(具体的には343.18448348日)の日時を世界協定時で求める関数を作っています。いかのようなコードを実行したところ、2019年12月8日19時25分39秒と、世界協定時より9時間早く計算されてしまいます。(手計算では9日、4時25分39秒)結果的に9時間足せばいいのですが、それでは根本的な解決にはならないと思います。(ctime をincludeして struct tm, time_t を用いています)
対処法をご存じでしたら、ご教授していただけると幸いです。
宜しくお願い致します。
#include <ctime> #include <iostream> using namespace std; int main(){ tm from = { 0,0,0,0,0,100 + year,0,0,0 }; // From 01.01.2019 (year = 19) time_t time_pass = mktime(&from); // 1970/1/1/0:0:0 からの経過時間をunixで返す time_t obrv_time = time_pass + day * 24 * 3600; // さらにday(343.18448348日分の経過秒数を足す) tm obrv_date = { 0,0,0,0,0,0,0,0,0 }; errno_t err = gmtime_s(&obrv_date, &obrv_time); // UTCで日時を返す } // 結果 // 2019-12-8 19:25:39 //手計算では 4:25:39のはず...
回答3件
あなたの回答
tips
プレビュー