返回系统日期的C ++函数

时间:2008-12-26 18:11:17

标签: c++

我需要c ++中的函数,它允许我检索和存储系统日期。我有一个用于存储日期的课程。

7 个答案:

答案 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)

几分钟前我写了非常相似的答案。您可以使用C ++ 11中提供的计时器。 http://en.cppreference.com/w/cpp/chrono/time_point