首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请教怎么将例如"085308"的字符串转换成时间"16:53:08"

2012-02-28 
请问如何将例如085308的字符串转换成时间16:53:08?这是从GPS上取出的信息数据,为hhmmss.sss格式的字符

请问如何将例如"085308"的字符串转换成时间"16:53:08"?
这是从GPS上取出的信息数据,为hhmmss.sss格式的字符串,请教如何将它转换成hh:mm:ss格式的字符串?另外需要注意的一点是原信息是格林威治时间,转换后应该是北京时间(时区+8).例如:
从GPS上取来的信息是 "085308.109 ",表示格林威治时间8点53分8.109秒,现转成北京时间 "16:53:08 "(小数点后面的不要了),C语言应该怎么处理?
我是菜鸟,最好能给出程序,谢谢.

[解决办法]
//str is 085308.109
float num;
sscanf(num, "%01.3f ",&str);
int hour,min,sec;
hour=num/10000;
min=num/100-hour*100;
sec=num-min*100-hour*10000;

printf( "%d:%d:%d ",hour+8,min,sec);
[解决办法]
#include <stdio.h>

int main()
{
char str[] = "085308.109 ";
int h, m, s;
sscanf(str, "%2d%2d%2d ", &h, &m, &s);
h += 8;
if (h> =24) h -= 24;
printf( "%02d:%02d:%02d\n ", h, m, s);
return 0;
}
[解决办法]
char result_s[10] = {0};
char gps_s[] = "085308.109 ";
char hh_s[3];
char mm_s[3];
char ss_s[3];
int hh;

strncpy(hh_s, gps_s, 2);
strncpy(mm_s, &gps_s[2], 2);
strncpy(ss_s, &gps_s[4], 2);

hh = (atoi(hh_s)+8)%24;

sprintf(result_s, "%d:%s:%s ", hh, mm_s, ss_s);

[解决办法]
sscanf(num, "%01.3f ",&str); 反了 ---》sscanf(str, "%01.3f ",&num);
sorry

热点排行