UINT32 ncGetTime(char *pNewTime) { char *pStr[3]; int i = 0; int j = 0; char seps[] = "T"; char seps1[] = "Z"; char seps2[] = ":"; char *token = NULL; char *pTime = NULL; UINT32 hour = 0; UINT32 minute = 0; UINT32 second = 0; UINT32 time = 0; token = strtok(pNewTime,seps); pTime = strtok(NULL,seps); token = strtok(pTime,seps1); for(i=0;i<3;i++) { pStr[i] = (char*)malloc(10); } token = strtok(token,seps2); while(token !=NULL) { snprintf(pStr[j],10,"%s",token); token=strtok(NULL,seps2); j++; } hour = atoi(pStr[0]); minute = atoi(pStr[1]); second = atoi(pStr[2]); DBG("ncGetTime hour %u minute %u second %u\n",hour,minute,second); for(i=0;i<3;i++) { free(pStr[i]); } time = hour * 3600 + minute * 60 + second; return time; }
时间: 2024-04-28 17:26:51 浏览: 125
C++中char*转换为LPCWSTR的解决方案
这是一个用于将 ISO 8601 格式时间转换为秒数的函数,函数名为 `ncGetTime`,返回值为 `UINT32` 类型,参数为 `char *` 类型的指针 `pNewTime`,表示待转换的时间字符串。函数内部包含了以下几个步骤:
1. 定义字符数组 `pStr[3]`,用于存储分离出来的小时、分钟、秒钟数;
2. 定义字符串分隔符 `seps`、`seps1`、`seps2`,分别用于在时间字符串中分离出日期和时间、分离出小时、分钟、秒钟数、分离出小时、分钟、秒钟数中的每一项;
3. 使用 `strtok` 函数,以分隔符 `seps` 分离出日期和时间部分,并使用第二次 `strtok` 函数,以分隔符 `seps1` 分离出时间部分中的小时、分钟、秒钟数部分;
4. 使用第三次 `strtok` 函数,以分隔符 `seps2` 分离出小时、分钟、秒钟数中的每一项,并分别存储到字符数组 `pStr[3]` 中;
5. 使用 `atoi` 函数将字符数组 `pStr[3]` 中的每一项转换为整数类型,并计算出总秒数 `time`;
6. 释放字符数组 `pStr[3]` 所占用的内存空间,并返回总秒数 `time`。
需要注意的是,该函数仅适用于符合 ISO 8601 格式的时间字符串,对于其他格式的时间字符串需要进行相应的修改。另外,函数内部使用了一些 C 库函数,如 `strtok`、`atoi`、`snprintf` 等,需要了解其具体用法。
阅读全文