显示今天的日期
Displaying today's date
在我的程序中,我试图以天//月//年的布局显示今天的日期。我尝试过使用许多不同的方法,但我不断收到关于不安全使用cTime的错误。
有没有一种简单的方法可以让我的程序显示日期:
time_t t = time(0); // get time now
struct tm * now = localtime( & t );
cout << (now->tm_year + 1900) << '-'
<< (now->tm_mon + 1) << '-'
<< now->tm_mday
<< endl;
我一直得到"localtime':这个函数或变量可能不安全。请考虑使用localtime_s。"所以我做了,现在我得到了"localtime_s":函数不接受1个参数
localtime_s是一个特定于Microsoft的函数,与C标准函数相似,但参数略有不同,不太容易出错。看见http://msdn.microsoft.com/en-us/library/a442x3ye.aspx了解更多信息。
也就是说,如果您使用C++,那么最好使用C++标准库中chrono部分的函数。它们更易于使用且安全:http://en.cppreference.com/w/cpp/chrono
不幸的是,从time_t
到格式化文本的函数的标准定义似乎都存在一些潜在的安全问题,尤其是在多线程程序中。这让您可以在选择供应商特定的路线还是为了便携性而失去安全性之间做出选择。
Microsoft特定路线:
localtime_s的详细信息可在此处获取:http://msdn.microsoft.com/en-us/library/a442x3ye%28v=vs.110%29.aspx
之后类似的东西应该在视觉工作室2012没有警告:
#include <ctime>
#include <iostream>
using namespace std;
int main() {
time_t t = time(0); // get time now
struct tm now;
localtime_s(&now, &t);
cout << (now->tm_year + 1900) << '-'
<< (now->tm_mon + 1) << '-'
<< now->tm_mday
<< endl;
}
但是localtime_s是微软特有的,所以使用它会限制代码的可移植性。
符合标准但不太安全的路线:
如果你更喜欢符合标准而不是更安全的版本,你可以使用你代码的原始版本,但在文件顶部添加以下内容:
#define _CRT_SECURE_NO_WARNINGS
- 查询SQLite数据库中的日期
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- Log4cpp:以UTC/GMT时区打印日期
- 使用C++的日期库读取时间
- 日期格式为C++
- 如何在 C++20 计时中为日期添加天数?
- 如何在QTableView中排序和更改日期格式
- 如何在cpp中使用地图显示给定日期范围内(在下面的问题中)的费率?
- Gtkmm 会不断检查 Gtk::日历上的所选日期是否发生变化
- fmt 与 Howard Hinnant 的日期:为什么从 fmt::to_string "{}"?FMT 和日期的最佳实践?
- 使程序检查当前日期是否=预期日期
- LinuxdeployQT 今天如何创建 Appimage,自 ubuntu 16.04 发布以来,它可以在每个 Lin
- 如何找到两个日期之间的时间差异(以秒和纳秒为单位)?
- JNI 日期值转换问题,在C++中获取不同的长整型值
- 确定夏令时是否适用于特定日期
- C++日期库因时区而失败
- C++ - 如何检查今天的日期是否为字符串?
- 显示今天的日期
- C++ 给定日期和今天日期之间的天数
- 将特定日期(如"今天上午 10:00")转换为time_t