年の初めから経過した秒数を計算する必要があります。私が見つけたすべての時間関数と少し混乱しています。
タイマー(1970年1月1日からの秒数を検索)を使用することを考えましたが、どうすればこれを続行できますか?
デフォルトでは、C++ は間違いなく醜いライブラリにしかアクセスできませ<ctime>んが、それでも問題を解決できます。
timeとして現在の時刻を取得するために呼び出します。time_tstruct tmを使用して、指定された時間を(さまざまな時間コンポーネント - 年、月、... - 分割を持つ構造)に変換しlocaltimeます。struct tmて、今年の初めに移動します。mktimeに変換し直します。これで、現在の年の始まりがわかりました。struct tmtime_ttime_ttime_tポイント 1 で取得した値からこの値を減算しdifftimeます。これで、年の初めから経過した秒数がわかりました。私はあなたが機能を意味していると思いますtime。はい、使用できます。より具体的には、次の点を見てください。
time(現在の時刻を返します)localtime(現在の時刻を、年、月などをより簡単に利用できる形式にデコードします)struct tm(localtime返ってくるもの)mktimestruct tm( a から aに戻すtime_t)difftimetime_t(2 つの の差を秒単位で計算します)。#include <ctime>
double seconds_since_year_began()
{
time_t now = std::time(NULL);
tm* tmp = std::localtime(&now);
tm t = {0};
t.tm_year = tmp->tm_year;
return std::difftime(now, std::mktime(&t));
}
#include <ctime>
ここで例を見てください:
http://www.cplusplus.com/reference/clibrary/ctime/mktime/
これを使用して、1 月 1 日の 0:00 の「エポックからの秒数」を取得し、 によって返される値から減算しますtime()。