C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C++ STL】mktime()関数の使い方を徹底解説!構文・パラメータ・実例つき

本記事では、C++ STLにおけるmktime()関数の仕組み、構文、そして具体的な使用例について詳しく解説します。

mktime()関数とは?

mktime()関数は、C++ STLに標準で用意されている組み込み関数の一つで、<ctime>ヘッダーファイル内で定義されています。この関数の主な役割は、ローカル時間を表すtm構造体を、time_t型の時刻オブジェクトへ変換することです。

動作としては、時刻の入力をマシンのローカルタイムゾーンに変換するlocaltime()関数とちょうど逆の処理を行うものであり、両者は対になる関係といえます。

さらに便利な点として、tm構造体の各メンバーの値が有効な範囲外であったり、tm_daytm_ydayが不正な値であった場合でも、この関数が自動的に正しい範囲へ補正してくれます。そのため、日付の正規化処理にも活用できます。

構文

time_t mktime( struct tm* tptr );

パラメータ

この関数は、以下のパラメータを受け取ります。

  • tptr − ローカル時間の情報を格納したtm構造体へのポインタです。

戻り値

引数tptrに対応するtime_t型の値を返します。

使用例

それでは、実際のコードを見てみましょう。以下の例では、1996年9月25日の曜日を求めています。

#include <bits/stdc++.h>
using namespace std;
int main(){
   time_t hold;
   tm* hold_ptr;
   char days[7][20] = {"Sunday", "Monday", "tuesday","Wednesday","Thursday","Friday","Saturday" };
   int year = 1996;
   int month = 9;
   int day = 25;
   time(&hold);
   hold_ptr = localtime(&hold);
   hold_ptr->tm_year = year - 1900;
   hold_ptr->tm_mon = month - 1;
   hold_ptr->tm_mday = day;
   mktime(hold_ptr);
   cout<<"Day on 25th September 1996 was "<<days[hold_ptr->tm_wday];
   return 0;
}

コードの解説

まずtime()関数で現在時刻を取得し、localtime()tm構造体に変換します。その後、年・月・日の各メンバー(tm_yeartm_montm_mday)を目的の日付に書き換え、mktime()を呼び出すことで、曜日を表すtm_wdayが自動的に計算される仕組みです。

出力結果

Day on 25th September 1996 was Wednesday

このように、1996年9月25日が水曜日(Wednesday)であったことが確認できました。mktime()を活用すれば、このように特定の日付から簡単に曜日を求めることができます。

  1. C++ STLのcosh()関数とは?双曲線余弦の求め方をサンプルコード付きで解説

    cosh()関数とは? C++のSTLに組み込まれているcosh()関数は、ラジアン単位で与えられた角度の双曲線余弦(ハイパボリック・コサイン)を計算して返す関数です。使用するには、<cmath>ヘッダーをインクルードする必要があります。 双曲線余弦は、数学的に次の式で定義されます。 cosh(x) = (e^x + e^(-x)) / 2 構文 cosh()関数の構文は以下の通りです。 cosh(var) 構文から分かるように、cosh()関数はfloat型、double型、long double型のいずれかの引数varを受け取ります。そして、その双曲線余弦を返します。なお、引

  2. C++ STLのsinh()関数の使い方を徹底解説

    sinh()関数とはsinh()関数は、ラジアンで指定された値の双曲線正弦(ハイパボリックサイン)を返す関数です。C++のSTL(標準テンプレートライブラリ)に組み込まれており、<cmath>ヘッダをインクルードすることで利用できます。双曲線正弦は、以下の数式で定義されます。sinh(x) = (e^x − e^−x) / 2sinh()関数の構文sinh()関数の構文は以下のとおりです。sinh(var)構文からわかるように、sinh()関数はfloat型、double型、long double型のいずれかのパラメータvarを受け取ります。戻り値は、varの双曲線正弦です。sin