利用S60 3rd中的RTz进行时区转换/修改
3rd中TLocale::SetUniversalTimeOffset()已经被移走,因此无法通过TLocale修改系统时区。
但是RTz提供了连接到Timezone服务器的功能,可以利用其SetHomeTime()进行设置本地时间,同时也修改了时区。
转换时区举例:
假如当前系统时区是+3区,想要把当前系统时间转换为+8区的当地时间。
class RTz
Location: tz.h
Link against: tzclient.lib
CTzId* tzid = CTzId::NewL(_L8(”Asia/Shanghai”)); //上海是+8区
RTz tz;
User::LeaveIfError(tz.Connect());
TTime curTime;
curTime.UniversalTime(); //将当前时间转换为UTC时间,不管当前时区是多少,对应的UTC时间是固定的(当然前提是你只改动时区,不改动时间)
tz.ConvertToLocalTime(curTime,*tzid); //转换为上海时间,即+8区时间
TBuf<16> timeBuf;
curTime.FormatL(timeBuf,_L(”%F%Y/%M/%D,%H:%T:%S”)); //timeBuf内容为类似于:2008/07/10,15:31:22
tz.Close();
delete tzid;
注:时区对应的城市可以至http://www.timezoneconverter.com/查询