C++ 日期和时间

发布于 2024-12-22 04:33:36 字数 4962 浏览 12 评论 0

C++标准库没有提供正确的日期类型。 C++从 C 继承了用于日期和时间操作的结构和函数。要访问与日期和时间相关的函数和结构,您需要在 C++程序中包括头文件。有四种与时间相关的类型: 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.NoFunction & Purpose
1

time_t time(time_t *time);

This returns the current calendar time of the system in number of seconds elapsed since January 1, 1970. If the system has no time, .1 is returned.

2

char *ctime(const time_t *time);

This returns a pointer to a string of the form day month year hours:minutes:seconds year\n\0.

3

struct tm *localtime(const time_t *time);

This returns a pointer to the tm structure representing local time.

4

clock_t clock(void);

This returns a value that approximates the amount of time the calling program has been running. A value of .1 is returned if the time is not available.

5

char * asctime ( const struct tm * time );

This returns a pointer to a string that contains the information stored in the structure pointed to by time converted into the form: day month date hours:minutes:seconds year\n\0

6

struct tm *gmtime(const time_t *time);

This returns a pointer to the time in the form of a tm structure. The time is represented in Coordinated Universal Time (UTC), which is essentially Greenwich Mean Time (GMT).

7

time_t mktime(struct tm *time);

This returns the calendar-time equivalent of the time found in the structure pointed to by time.

8

double difftime ( time_t time2, time_t time1 );

This function calculates the difference in seconds between time1 and time2.

9

size_t strftime();

This function can be used to format date and time in a specific format.

当前日期和时间

假设您要以本地时间或世界标准时间 (UTC) 检索当前系统日期和时间。以下是实现相同目的的示例-

现场演示

#include 
#include 

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 格式化时间

在 C 或 C++ 中使用日期和时间时, tm 结构非常重要。如上所述,该结构以 C 结构的形式保存日期和时间。大多数与时间相关的功能都使用 tm 结构。以下是利用各种与日期和时间相关的功能和 tm 结构的示例-

在本章中使用结构时,我假设您对 C 结构以及如何使用 arrow-> 运算符访问结构成员有基本的了解。

现场演示

#include 
#include 

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 is:: " << now << endl;

   tm *ltm = localtime(&now);

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

编译并执行上述代码后,将产生以下结果

Number of sec since January 1,1970 is:: 1588485717
Year:2020
Month: 5
Day: 3
Time: 11:31:57

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
27 人气
更多

推荐作者

李珊平

文章 0 评论 0

Quxin

文章 0 评论 0

范无咎

文章 0 评论 0

github_ZOJ2N8YxBm

文章 0 评论 0

若言

文章 0 评论 0

南…巷孤猫

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文