我需要c ++中的函数,它允许我检索和存储系统日期。我有一个用于存储日期的课程。
答案 0 :(得分:7)
处理日期和时间很困难,这就是人们使用图书馆的原因。我更喜欢boost :: date_time。
boost::posix_time::ptime local_time = boost::posix_time::second_clock::local_time();
boost::gregorian::date d = local_time.date();
d是当地时间的当前日期,它使用计算机时区设置。要获得UTC时间,您可以使用 boost :: posix_time :: second_clock :: universal_time()。
答案 1 :(得分:5)
来自time.h
:
struct tm {
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after the hour - [0,59] */
int tm_hour; /* hours since midnight - [0,23] */
int tm_mday; /* day of the month - [1,31] */
int tm_mon; /* months since January - [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday - [0,6] */
int tm_yday; /* days since January 1 - [0,365] */
int tm_isdst; /* daylight savings time flag */
};
time_t time(time_t * timer);
struct tm* gmtime(const time_t *timer);
struct tm* localtime(const time_t * timer);
答案 2 :(得分:2)
对于Windows上的C ++,请查看Windows时间functions,特别是GetSystemTime。
答案 3 :(得分:2)
只需添加,GetSystemTime为您提供UTC时间,同时为了获得TimeZone调整时间,您需要使用GetLocalTime。
与time.h函数相比,WinBase时间函数(通过windows.h)之间的另一个区别是Windows时间函数一直可靠回1601,而time.h仅在1900年以后才开始。我不确定这是否是你需要考虑的事情。
答案 4 :(得分:0)
时间()
但也可以看到localtime和asctime进行显示
答案 5 :(得分:0)
以下是我最终使用的内容(nowtm
填充了当前系统时间):
time_t rawtime=time(NULL);
tm* nowtm = gmtime(&rawtime);
其中定义了tm:
struct tm {
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after the hour - [0,59] */
int tm_hour; /* hours since midnight - [0,23] */
int tm_mday; /* day of the month - [1,31] */
int tm_mon; /* months since January - [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday - [0,6] */
int tm_yday; /* days since January 1 - [0,365] */
int tm_isdst; /* daylight savings time flag */
};
答案 6 :(得分:0)