我正在用C++开发一个Appointment应用程序,并希望使用一些日期和时间功能.
在谈论日期和时间时,是否更容易使用字符串,还是应该编写或获取日期/时间类?
我想编写一个包含约会时间和日期的约会课程.一旦我编写了类文件,我想将它集成到C++ builder中的表单应用程序中.
我看到有一个TMonthCalendar控件.我想在制作表单应用程序时使用此控件.因此,此控件使用的日期格式是什么?我想在创建类时使用与控件相同的类型,以便我可以轻松地将它集成在一起.
UPDATE
我发现它使用了TDateTime类型.我的问题是:我需要在控制台应用程序中使用什么包含语句?
jog*_*pan 15
C++ 11包括用于日期/时间表示的便利数据类型和函数,以及它们到字符串的转换.
有了这个,你可以做这样的事情(我认为非常不言自明):
#include <iostream>
#include <iomanip>
#include <ctime>
int main()
{
std::time_t t = std::time(NULL);
std::tm tm = *std::localtime(&t);
std::cout << "Time right now is " << std::put_time(&tm, "%c %Z") << '\n';
}
Run Code Online (Sandbox Code Playgroud)
特别是,有数据类型std::time_t和std::tm,和一个非常漂亮的IO操纵std::put_time了漂亮的印刷.它使用的格式字符串在cppreference中有详细记录.
这也应该与语言环境很好地协同工作,例如日语时间/日期格式:
std::cout.imbue(std::locale("ja_JP.utf8"));
std::cout << "ja_JP: " << std::put_time(&tm, "%c %Z") << '\n';
Run Code Online (Sandbox Code Playgroud)
该chrono包含在C++ 11标准库库还可以让你方便地做一些简单的时间/日期计算:
std::chrono::time_point<std::chrono::system_clock> now;
now = std::chrono::system_clock::now();
/* The day before today: */
std::time_t now_c = std::chrono::system_clock::to_time_t(
now - std::chrono::hours(24));
Run Code Online (Sandbox Code Playgroud)
不幸的是,并非所有这些都可用于所有编译器.特别是,该std::put_time功能似乎尚未在GCC 4.7.1中提供.为了获得我最初工作的代码,我不得不使用稍微不那么优雅的std::strftime函数:
#include <iostream>
#include <iomanip>
#include <ctime>
int main()
{
std::time_t t = std::time(NULL);
std::tm tm = *std::localtime(&t);
constexpr int bufsize = 100;
char buf[bufsize];
if (std::strftime(buf,bufsize,"%c %Z",&tm) != 0)
std::cout << "Time right now is " << buf << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9456 次 |
| 最近记录: |