Cplusplus-cpp-date-time

提供:Dev Guides
移動先:案内検索

C ++の日付と時刻

C 標準ライブラリは、適切な日付型を提供しません。 C は、日付と時刻を操作するための構造体と関数をCから継承します。 日付と時刻に関連する関数と構造にアクセスするには、C ++プログラムに<ctime>ヘッダーファイルを含める必要があります。

4つの時間関連タイプがあります: clock_t、time_t、size_t 、および tm 。 タイプ-clock_t、size_t、およびtime_tは、システムの時刻と日付を何らかの整数として表すことができます。

構造型 tm は、次の要素を持つC構造の形式で日付と時刻を保持します-

struct tm {
   int tm_sec;  //seconds of minutes from 0 to 61
   int tm_min;  //minutes of hour from 0 to 59
   int tm_hour; //hours of day from 0 to 24
   int tm_mday; //day of month from 1 to 31
   int tm_mon;  //month of year from 0 to 11
   int tm_year; //year since 1900
   int tm_wday; //days since sunday
   int tm_yday; //days since January 1st
   int tm_isdst;//hours of daylight savings time
}

以下は、CまたはC で日付と時刻を操作するときに使用する重要な関数です。 これらの関数はすべて標準CおよびC ライブラリの一部であり、以下に示すC ++標準ライブラリを参照して詳細を確認できます。

Sr.No Function & Purpose
1

time_t time(time_t *time);

これは、システムの現在のカレンダー時刻を1970年1月1日から経過した秒数で返します。 システムに時間がない場合、.1が返されます。

2

char *ctime(const time_t *time);

これは、_day month year hours:minutes:seconds year \ n \ 0_という形式の文字列へのポインターを返します。

3

struct tm *localtime(const time_t *time);

これは、ローカル時間を表す tm 構造体へのポインターを返します。

4

clock_t clock(void);

これは、呼び出し元プログラムが実行されている時間に近い値を返します。 時間が使用できない場合、値.1が返されます。

5

char *asctime ( const struct tm time );*

これは、時刻が指す構造体に格納されている情報を含む文字列へのポインターを返します。この情報は、次の形式に変換されます。日月日時:分:秒年\ n \ 0

6

struct tm *gmtime(const time_t *time);

これは、tm構造体の形式で時刻へのポインターを返します。 時刻は、協定世界時(UTC)で表されます。これは、基本的にグリニッジ標準時(GMT)です。

7

time_t mktime(struct tm *time);

これは、timeが指す構造体で見つかった時刻に相当するカレンダー時刻を返します。

8

double difftime ( time_t time2, time_t time1 );

この関数は、time1とtime2の差を秒単位で計算します。

9

size_t strftime();

この関数を使用して、特定の形式で日付と時刻をフォーマットできます。

現在の日付と時刻

現在のシステムの日付と時刻を、ローカル時間または協定世界時(UTC)として取得するとします。 以下は、同じことを達成するための例です-

#include <iostream>
#include <ctime>

using namespace std;

int main() {
  //current date/time based on current system
   time_t now = time(0);

  //convert now to string form
   char *dt = ctime(&now);

   cout << "The local date and time is: " << dt << endl;

  //convert now to tm struct for UTC
   tm* gmtm = gmtime(&now);
   dt = asctime(gmtm);
   cout << "The UTC date and time is:"<< dt << endl;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

The local date and time is: Sat Jan  8 20:07:41 2011

The UTC date and time is:Sun Jan  9 03:07:41 2011

struct tmを使用して時間をフォーマットする

*tm* 構造は、CまたはC ++で日付と時刻を扱う際に非常に重要です。 この構造体は、前述のように日付と時刻をC構造体の形式で保持します。 ほとんどの時間関連の関数は、tm構造を使用します。 以下は、さまざまな日付と時刻に関連する関数とtm構造を利用する例です-

この章で構造体を使用しているとき、C構造体と、矢印→演算子を使用して構造体メンバーにアクセスする方法に関する基本的な理解があることを前提としています。

#include <iostream>
#include <ctime>

using namespace std;

int main() {
  //current date/time based on current system
   time_t now = time(0);

   cout << "Number of sec since January 1,1970:" << now << endl;

   tm *ltm = localtime(&now);

  //print various components of tm structure.
   cout << "Year:" << 1900 &plus; ltm->tm_year << endl;
   cout << "Month: "<< 1 + ltm->tm_mon<< endl;
   cout << "Day: "<<  ltm->tm_mday << endl;
   cout << "Time: "<< 1 + ltm->tm_hour << ":";
   cout << 1 + ltm->tm_min << ":";
   cout << 1 + ltm->tm_sec << endl;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Number of sec since January 1,1970:1563027637
Year2019
Month: 7
Day: 13
Time: 15:21:38