C ++日期和时间

C ++标准库未提供正确的日期类型. C ++从C继承了日期和时间操作的结构和函数.要访问与日期和时间相关的函数和结构,您需要包含< ctime> C ++程序中的头文件.

有四种与时间相关的类型: clock_t,time_t,size_t tm .类型 -  clock_t,size_t和time_t能够将系统时间和日期表示为某种整数.

结构类型 tm 包含日期和时间以C结构的形式,具有以下元素 :

 
 struct tm {
 int tm_sec;//从0到61的分钟数
 int tm_min;//从0到59的小时数
 int tm_hour;//从0到24的每天小时
 int tm_mday;//从1到31的每月一天
 int tm_mon;//从0到11的一年中的一个月
 int tm_year;//自1900年以来
 int tm_wday;//星期天以来的日子
 int tm_yday;//自1月1日起的天数
 int tm_isdst;//夏令时的时间
}

以下是我们在使用C或C ++处理日期和时间时使用的重要函数.所有这些函数都是标准C和C ++库的一部分,您可以参考下面给出的C ++标准库来检查它们的详细信息.

Sr.No功能&目的
1

time_t time(time_t * time);

这将返回自1970年1月1日以来经过的秒数内系统的当前日历时间.如果系统没有时间,返回.1.

2

char * ctime(const time_t * time);

这将返回指向形式的字符串的指针日月份小时:分钟:秒年份\ n \\\ .

3

struct tm * localtime(const time_t * time);

返回指向 tm 结构的指针,表示当地时间.

4

clock_t clock(void);

这将返回一个值,该值近似于调用程序运行的时间.如果时间不可用,则返回值.1.

5

char * asctime(const struct tm * time);

返回指向字符串的指针,该字符串包含存储在转换为表单的时间所指向的结构中的信息:day month date hours:minutes:seconds year \\\
\0

6

struct tm * gmtime(const time_t * time);

这将以tm结构的形式返回指向时间的指针.时间以协调世界时(UTC)表示,基本上是格林威治标准时间(GMT).

7

time_t mktime(struct tm * 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" << 1970 + 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:1294548238
Year: 2011
Month: 1
Day: 8
Time: 22: 44:59