如何从time_t / timeval获取iso_date(YYYYMMDD)

时间:2011-02-06 13:46:18

标签: c datetime boost unix-timestamp

如果time_t1291121400,如何将当天的日期格式化为20101130

4 个答案:

答案 0 :(得分:5)

使用gmtime(3)localtime(3)将其转换为struct tm (或者,更好的是,可重入版本gmtime_rlocaltime_r),以及 然后使用strftime(3)将其转换为字符串。例如,如果你 想要UTC的输出:

struct tm tm;
char buf[9];
gmtime_r(&my_time_t, &tm);
strftime(buf, sizeof(buf), "%Y%m%d", tm);
printf("The date is: %s\n", buf);

答案 1 :(得分:1)

以下对我有用:

int iso_date_from_time_t ( const time_t & in_time_t_ ) 
{
     tm temp_this_tm_;

     { // the following to set local dst fields of struct tm ?
         time_t tvsec_ = time(NULL);
         localtime_r ( & tvsec_, & temp_this_tm_ ) ;
     }
     localtime_r ( & in_time_t, & temp_this_tm_ ) ;

     return ( ( ( ( 1900 + temp_this_tm_.tm_year ) * 100 + ( 1 + temp_this_tm_.tm_mon ) ) * 100 ) + temp_this_tm_.tm_mday ) ;
}

感谢您的协助。

答案 2 :(得分:0)

使用gmtimelocaltimestrftime功能。

答案 3 :(得分:0)

void function () 
{
    time_t     current_time;
    struct tm *struct_time;

    time( &current_time);

    struct_time = gmtime( &current_time);

    /* Now, you can get the ISO date by 
     * YYYY 'struct_time->tm_year+1900' 
     * MM 'struct_time->tm_mon+1'
     * DD 'struct_time->tm_mday' */
}

请查看'struct tm'结构。