我有以下程序来获取当前日期和时间。
int main(void)
{
time_t result;
result = time(NULL);
struct tm* brokentime = localtime(&result);
printf("%s", asctime(brokentime));
return(0);
}
程序的输出如下:
Tue Aug 24 01:02:41 2010
如何从上面仅检索小时值01,如何? 或者是否有其他系统调用可以获得系统的当前小时?我需要在此基础上采取行动。
由于
答案 0 :(得分:5)
struct tm* brokentime = localtime(&result);
int hour = brokentime->tm_hour;
答案 1 :(得分:2)
如果您想将它作为数字(而不是字符串),那么只需访问brokentime
结构中的相应字段:
time_t result;
result = time(NULL);
struct tm* brokentime = localtime(&result);
int h = brokentime->tm_hour; /* h now contains the hour (1) */
如果你想把它作为字符串,那么你必须自己格式化字符串(而不是使用asctime
):
time_t result;
result = time(NULL);
struct tm* brokentime = localtime(&result);
char hour_str[3];
strftime(hour_str, sizeof(hour_str), "%H", brokentime);
/* hour_str now contains the hour ("01") */
使用%I
而不是%H
来获得12小时的时间,而不是24小时的时间。
答案 2 :(得分:1)
您应该使用tm.tm_hour作为小时值,以及其他(小时,秒,月等)
答案 3 :(得分:0)
Struct tm包含以下内容。上面的答案中没有提供一些信息,尽管他们完美地回答了OP。
The meaning of each is:
Member Meaning Range
tm_sec seconds after the minute 0-61*
tm_min minutes after the hour 0-59
tm_hour hours since midnight 0-23
tm_mday day of the month 1-31
tm_mon months since January 0-11
tm_year years since 1900
tm_wday days since Sunday 0-6
tm_yday days since January 1 0-365
tm_isdst Daylight Saving Time flag
因此,您可以访问此结构中的值。