YYYY/MON/DATE-HR:MIN:SEC
我想获得所有领域的个人价值观,特别是TM结构中的秒数。
是否有任何function来做这种转换(或)任何其他方式来实现它?
如何确定Windows的“下载文件夹”path?
从Windows中删除控制台在Windows上构buildQt程序
timer_create():-1 EAGAIN(资源暂时不可用)
如何为新安装的Boost添加编译器包含path和链接器库path?
CoInitialize失败
如何隐藏MahApps.Metro窗口中的closuresbutton?
在UDP中recvfrom没有得到任何东西
发生致命错误时如何重启Linux系统(C编程)
其他方式实现它(假设YYYY/MM/DD-HH:MM:SS ):
struct tm Str2Tm(const char* str) { struct tm var = {0}; var.tm_isdst = -1; // daylight saving time @R_548_4045@ion is not available var.tm_year = 1000*(str[0]-'0')+100*(str[1]-'0')+10*(str[2]-'0')+1*(str[3]-'0')-1900; var.tm_mon = 10*(str[ 5]-'0')+1*(str[ 6]-'0')-1; var.tm_mday = 10*(str[ 8]-'0')+1*(str[ 9]-'0'); var.tm_hour = 10*(str[11]-'0')+1*(str[12]-'0'); var.tm_min = 10*(str[14]-'0')+1*(str[15]-'0'); var.tm_sec = 10*(str[17]-'0')+1*(str[18]-'0'); return var; }
如果月份是3个字母的格式,那么您将不得不以不同的方式获取var.tm_mon :
int GetMon(const char* str) { static const char mon_name[][4] = { "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" }; for (int i=0; i<12; i++) { if (str[5]==mon_name[i][0] && str[6]==mon_name[i][1] && str[7]==mon_name[i][2]) return i; } return -1; }
你可以尝试使用sscanf()
void filltm(char* str,struct tm* tim) { sscanf(str,"%d/%d/%d-%d:%d:%d",&tim->tm_year,&tim->tm_mon,&tim->tm_mday,&tim->tm_hour,&tim->tm_min,&tim->tm_sec); tim->tm_year -= 1900; tim->tm_mon--; }
struct tm tm = {0}; if (6 != sscanf(str,&tm.tm_year,&tm.tm_mon,&tm.tm_mday,&tm.tm_hour,&tm.tm_min,&tm.tm_sec)) Handle_Badinput(); tm.tm_year -= 1900; tm.tm_mon--; tm.tm_isdst = -1; localtime(&tm); // set tm_wday,tm_yday fields.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。