····· 各位兄弟帮帮忙,如何将 char 数组 转换为 time_t 类型????

时间:2022-11-23 21:26:54
各位兄弟帮帮忙,如何将 char 数组 转换为 time_t 类型????

char tt[23]="2006-04-12 12:03:09.081";

time_t tt1;

如何将tt[23]放到tt1  ??????

小弟对C不熟,请大哥给出具体代码。

谢!!!!!!!!

6 个解决方案

#1


给出两种方法:
1.利用mktime
//指定time_t类型的时间,格式化为YYYYMMDDHH24MISS型的字符串
void FormatTime(time_t time1, char *szTime)
{
struct tm tm1;

#ifdef WIN32
tm1 = *localtime(%26amp;time1);
#else
localtime_r(%26amp;time1, %26amp;tm1 );
#endif
sprintf( szTime, %26quot;%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%26quot;,
tm1.tm_year+1900, tm1.tm_mon+1, tm1.tm_mday,
tm1.tm_hour, tm1.tm_min,tm1.tm_sec);
}

//指定YYYYMMDDHH24MISS型的时间,格式化为time_t型的时间
time_t FormatTime2(char * szTime)
{
struct tm tm1;
time_t time1;

sscanf(szTime, %26quot;%4d%2d%2d%2d%2d%2d%26quot;, 
%26amp;tm1.tm_year, 
%26amp;tm1.tm_mon, 
%26amp;tm1.tm_mday, 
%26amp;tm1.tm_hour, 
%26amp;tm1.tm_min,
%26amp;tm1.tm_sec);

tm1.tm_year -= 1900;
tm1.tm_mon --;

tm1.tm_isdst=-1;

time1 = mktime(%26amp;tm1);
return time1;
}
====================================
2.格式化字符串
sscanf(sztime, %26quot;%4d%2d%2d%2d%2d%2d%26quot;, %26amp;tm1.tm_year,
%26amp;tm1.tm_mon, %26amp;tm1.tm_mday, %26amp;tm1.tm_hour, %26amp;tm1.tm_min,%26amp;tm1.tm_sec);

#2


由于是转贴
直接贴过来的

需要将 quot; ->   -
       amp; ->    :

#3


char tt[23]="2006-04-12 12:03:09.081";
根据这个字符串, 分解各个成员,
赋值给一个  struct tm ,
然后用 mktime(), 把 struct tm 转换成 time_t ,
就是你所想要的结果了 ~

#4


char tt[23]="2006-04-12 12:03:09.081";
struct tm tm1;
time_t tt1;

sscanf(tt, "%d-%d-%d %d:%d:%d", tm1.tm_year, tm1.tm_mon, tm1.tm_mday, tm1.tm_hour, m1.tm_min, tm1.tm_sec);
tt1 = mktime(tm1);

#5


虫虫的sscanf中,后边那些变量名前都忘了取地址了。:P

#6


呵呵~看得出虫老大好久不用scanf了~

#1


给出两种方法:
1.利用mktime
//指定time_t类型的时间,格式化为YYYYMMDDHH24MISS型的字符串
void FormatTime(time_t time1, char *szTime)
{
struct tm tm1;

#ifdef WIN32
tm1 = *localtime(%26amp;time1);
#else
localtime_r(%26amp;time1, %26amp;tm1 );
#endif
sprintf( szTime, %26quot;%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%26quot;,
tm1.tm_year+1900, tm1.tm_mon+1, tm1.tm_mday,
tm1.tm_hour, tm1.tm_min,tm1.tm_sec);
}

//指定YYYYMMDDHH24MISS型的时间,格式化为time_t型的时间
time_t FormatTime2(char * szTime)
{
struct tm tm1;
time_t time1;

sscanf(szTime, %26quot;%4d%2d%2d%2d%2d%2d%26quot;, 
%26amp;tm1.tm_year, 
%26amp;tm1.tm_mon, 
%26amp;tm1.tm_mday, 
%26amp;tm1.tm_hour, 
%26amp;tm1.tm_min,
%26amp;tm1.tm_sec);

tm1.tm_year -= 1900;
tm1.tm_mon --;

tm1.tm_isdst=-1;

time1 = mktime(%26amp;tm1);
return time1;
}
====================================
2.格式化字符串
sscanf(sztime, %26quot;%4d%2d%2d%2d%2d%2d%26quot;, %26amp;tm1.tm_year,
%26amp;tm1.tm_mon, %26amp;tm1.tm_mday, %26amp;tm1.tm_hour, %26amp;tm1.tm_min,%26amp;tm1.tm_sec);

#2


由于是转贴
直接贴过来的

需要将 quot; ->   -
       amp; ->    :

#3


char tt[23]="2006-04-12 12:03:09.081";
根据这个字符串, 分解各个成员,
赋值给一个  struct tm ,
然后用 mktime(), 把 struct tm 转换成 time_t ,
就是你所想要的结果了 ~

#4


char tt[23]="2006-04-12 12:03:09.081";
struct tm tm1;
time_t tt1;

sscanf(tt, "%d-%d-%d %d:%d:%d", tm1.tm_year, tm1.tm_mon, tm1.tm_mday, tm1.tm_hour, m1.tm_min, tm1.tm_sec);
tt1 = mktime(tm1);

#5


虫虫的sscanf中,后边那些变量名前都忘了取地址了。:P

#6


呵呵~看得出虫老大好久不用scanf了~