各位高手,兄弟最近做一个关于世界时区转换的界面,类似Windows下的那个时区,但在时区转换算法上有些问题,请大家帮忙分析下.

liulintao2008 2008-04-02 11:11:20
32816, "(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi"
32817, "(GMT+05:45) Kathmandu"
32818, "(GMT+06:00) Astana, Dhaka"
32819, "(GMT+06:00) Sri Jayawardenepura"
32820, "(GMT+06:00) Almaty, Novosibirsk"
32821, "(GMT+06:30) Rangoon"
32822, "(GMT+07:00) Bangkok, Hanoi, Jakarta"
32823, "(GMT+07:00) Krasnoyarsk"
整数时间还好说,像上面那种5:30和5:45转换时会有问题.大家看看我的代码.
int TimeZonestrModify[] = {-720,-660,-600,-540,-480,-420,-420,-420,-360,-360,
-360,-300,-300,-300,-240,-240,-240,-210,-180,-180,-180,-120,-60,-60,0,0,60,60,
60,60,60,120,120,120,120,120,120,180,180,180,180,210,240,240,270,300,300,330,
345,360,360,360,390,420,420,480,480,480,480,480,540,540,540,570,570,600,600,600,
600,600,660,720,720,780};
我按分钟想避免了一些问题
SYSTEMTIME stime;
GetLocalTime(&stime);
int hour,month,day,year;
int maxDay = MaxDayNum(stime.wYear,stime.wMonth);

hour = (int)stime.wHour + (TimeZonestrModify[CurrentID]-TimeZonestrModify[OldID])/60;
//感觉是这里的问题,
year = stime.wYear;
month = stime.wMonth;
day = stime.wDay;
ModifyDateAndTime(&year,&month,&day,&hour);
stime.wDay = day;
stime.wYear = year;
stime.wMonth = month;
stime.wHour = hour;
SetLocalTime(&stime);

TIME_ZONE_INFORMATION timeZoneInfo;
GetTimeZoneInformation(&timeZoneInfo);
timeZoneInfo.Bias = 0 - TimeZonestrModify[CurrentID];//这里好着,按分钟转换
wcscpy(timeZoneInfo.StandardName,Standard_TimeZonestr);
SetTimeZoneInformation(&timeZoneInfo);
RegFlushKey(HKEY_LOCAL_MACHINE);
OldID = CurrentID;
...全文
77 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liulintao2008 2008-04-03
  • 打赏
  • 举报
回复
是不是 要在这里添加
SYSTEMTIME stime;
GetLocalTime(&stime);
int hour,month,day,year,minute;
int maxDay = MaxDayNum(stime.wYear,stime.wMonth);

minute = ****;
hour = (int)stime.wHour + (TimeZonestrModify[CurrentID]-TimeZonestrModify[OldID])/60;
aa3000 2008-04-02
  • 打赏
  • 举报
回复
LZ应该用分钟来计算,然后进位到小时,要不然分钟会不对的。

19,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧