c++ 获取当前日期,当前日期的前一天 c++代码
时间: 2024-09-27 09:15:39 浏览: 29
在C++中,获取当前日期通常需要依赖于操作系统提供的API或者第三方库,如C++11引入的`<chrono>`头文件。以下是使用`std::chrono`和`<ctime>`来获取当前日期及其前一天的基本示例:
```cpp
#include <iostream>
#include <chrono>
#include <ctime>
// 获取当前日期的时间点
auto now = std::chrono::system_clock::now();
auto local_time = std::chrono::system_clock::to_time_t(now);
std::tm today = *std::localtime(&local_time);
// 使用strftime格式化日期
char date_buffer[20];
std::strftime(date_buffer, sizeof(date_buffer), "%Y-%m-%d", &today);
// 输出今天的日期
std::cout << "Today's date: " << date_buffer << std::endl;
// 减一天的操作,因为`std::tm`结构体没有直接提供减一天的功能,我们可以手动处理
std::tm yesterday;
yesterday.tm_year = today.tm_year - 1900; // 如果今年不是闰年,year要减一
yesterday.tm_mon = today.tm_mon - 1; // 月份也要相应调整
if (today.tm_mday > 1) { // 非第一天,减一天
yesterday.tm_mday -= 1;
} else {
if (today.tm_mon == 0) { // 如果是去年的最后一天,则进入新的一年
yesterday.tm_year--;
} else { // 否则,本月的第一天就是昨天
yesterday.tm_mday = 28; // 假设每月最多28天,实际情况需根据实际月份调整
yesterday.tm_mon = today.tm_mon + 1;
}
}
// 格式化并输出昨天的日期
std::strftime(date_buffer, sizeof(date_buffer), "%Y-%m-%d", &yesterday);
std::cout << "Yesterday's date: " << date_buffer << std::endl;