微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C中是否有本地时间的逆向函数?

我有一个string包含

YYYY/MON/DATE-HR:MIN:SEC

我想获得所有领域的个人价值观,特别是TM结构中的秒数。

是否有任何function来做这种转换(或)任何其他方式来实现它?

如何确定Windows的“下载文件夹”path?

只有recv()函数可以使一个套接字非阻塞?

从Windows中删除控制台在Windows上构buildQt程序

timer_create():-1 EAGAIN(资源暂时不可用)

如何为新安装的Boost添加编译器包含path和链接器库path?

CoInitialize失败

如何隐藏MahApps.Metro窗口中的closuresbutton?

在UDP中recvfrom没有得到任何东西

在c中为shell创build一个后台进程

发生致命错误时如何重启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--; }

简单的sscanf()解决方案,具有基本的错误检查。

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] 举报,一经查实,本站将立刻删除。

相关推荐