年の初めから経過した秒数を計算する必要があります。私が見つけたすべての時間関数と少し混乱しています。
タイマー(1970年1月1日からの秒数を検索)を使用することを考えましたが、どうすればこれを続行できますか?
デフォルトでは、C++ は間違いなく醜いライブラリにしかアクセスできませ<ctime>
んが、それでも問題を解決できます。
time
として現在の時刻を取得するために呼び出します。time_t
struct tm
を使用して、指定された時間を(さまざまな時間コンポーネント - 年、月、... - 分割を持つ構造)に変換しlocaltime
ます。struct tm
て、今年の初めに移動します。mktime
に変換し直します。これで、現在の年の始まりがわかりました。struct tm
time_t
time_t
time_t
ポイント 1 で取得した値からこの値を減算しdifftime
ます。これで、年の初めから経過した秒数がわかりました。私はあなたが機能を意味していると思いますtime
。はい、使用できます。より具体的には、次の点を見てください。
time
(現在の時刻を返します)localtime
(現在の時刻を、年、月などをより簡単に利用できる形式にデコードします)struct tm
(localtime
返ってくるもの)mktime
struct tm
( a から aに戻すtime_t
)difftime
time_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()
。