Date et heure C++


La bibliothèque standard C++ ne fournit pas de type de date. C++ hérite des structures et fonctions du langage C pour les opérations de date et d'heure. Afin d'utiliser les fonctions et structures liées à la date et à l'heure, le fichier d'en-tête <ctime> doit être référencé dans le programme C++.

a quatre types liés au temps : clock_t, time_t, size_t et tm. Les types clock_t, size_t et time_t représentent l'heure et la date du système sous la forme de certains entiers.

Type de structuretm Enregistrez la date et l'heure sous la forme d'une structure C La définition de la structure tm est la suivante :

struct tm {
  int tm_sec;   // 秒,正常范围从 0 到 59,但允许至 61
  int tm_min;   // 分,范围从 0 到 59
  int tm_hour;  // 小时,范围从 0 到 23
  int tm_mday;  // 一月中的第几天,范围从 1 到 31
  int tm_mon;   // 月,范围从 0 到 11
  int tm_year;  // 自 1900 年起的年数
  int tm_wday;  // 一周中的第几天,范围从 0 到 6,从星期日算起
  int tm_yday;  // 一年中的第几天,范围从 0 到 365,从 1 月 1 日算起
  int tm_isdst; // 夏令时
}

Ce qui suit concerne la date et l'heure dans. Fonctions importantes du C/C++. Toutes ces fonctions font partie de la bibliothèque standard C/C++. Vous pouvez vérifier les détails de chaque fonction dans la bibliothèque standard C++.

Numéro de sérieFonction et description
1
序号函数 & 描述
1time_t time(time_t *time);
该函数返回系统的当前日历时间,自 1970 年 1 月 1 日以来经过的秒数。如果系统没有时间,则返回 .1。
2char *ctime(const time_t *time);
该返回一个表示当地时间的字符串指针,字符串形式 day month year hours:minutes:seconds yearn
3struct tm *localtime(const time_t *time);
该函数返回一个指向表示本地时间的 tm 结构的指针。
4clock_t clock(void);
该函数返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。如果时间不可用,则返回 .1。
5char * asctime ( const struct tm * time );
该函数返回一个指向字符串的指针,字符串包含了 time 所指向结构中存储的信息,返回形式为:day month date hours:minutes:seconds yearn。
6struct tm *gmtime(const time_t *time);
该函数返回一个指向 time 的指针,time 为 tm 结构,用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。
7time_t mktime(struct tm *time);
该函数返回日历时间,相当于 time 所指向结构中存储的时间。
8double difftime ( time_t time2, time_t time1 );
该函数返回 time1 和 time2 之间相差的秒数。
9size_t strftime();
该函数可用于格式化日期和时间为指定的格式。
time_t time(time_t *time);<🎜>
Cette fonction renvoie l'heure actuelle du calendrier du système depuis le 1er janvier 1970. nombre de secondes écoulées. Si le système n'a pas de temps, .1 est renvoyé.
2<🎜>char *ctime(const time_t *time);<🎜>
Ceci renvoie un caractère représentant l'heure locale Pointeur de chaîne, format de chaînejour mois année heures:minutes:secondes aspirer

Date et heure actuelles

L'exemple suivant obtient la date et l'heure actuelles du système, y compris l'heure locale et le temps universel coordonné (UTC).

#include <iostream>
#include <ctime>

using namespace std;

int main( )
{
   // 基于当前系统的当前日期/时间
   time_t now = time(0);
   
   // 把 now 转换为字符串形式
   char* dt = ctime(&now);

   cout << "本地日期和时间:" << dt << endl;

   // 把 now 转换为 tm 结构
   tm *gmtm = gmtime(&now);
   dt = asctime(gmtm);
   cout << "UTC 日期和时间:"<< dt << endl;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

本地日期和时间:Sat Jan  8 20:07:41 2011

UTC 日期和时间:Sun Jan  9 03:07:41 2011

Formater l'heure à l'aide de struct tm

tm struct C'est particulièrement important lorsqu'il s'agit d'opérations liées à la date et à l'heure en C/C++. La structure tm contient la date et l'heure sous forme de structure C. La plupart des fonctions liées au temps utilisent la structure tm. L'exemple suivant utilise la structure tm et diverses fonctions liées à la date et à l'heure.

Avant de vous entraîner à utiliser les structures, vous devez avoir une compréhension de base des structures C et savoir comment utiliser l'opérateur flèche ->

#include <iostream>
#include <ctime>

using namespace std;

int main( )
{
   // 基于当前系统的当前日期/时间
   time_t now = time(0);

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

   tm *ltm = localtime(&now);

   // 输出 tm 结构的各个组成部分
   cout << "Year: "<< 1900 + 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;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

Number of sec since January 1, 1970:1294548238
Year: 2011
Month: 1
Day: 8
Time: 22: 44:59