本文原创发布在华为开发者社区。
介绍
本示例通过app.json5中bundleName里的城市名称,匹配对应城市时区,并把对应时间显示在时钟界面。
实现世界时钟源码链接
效果预览

使用说明
进入应用后,直接显示伦敦(UTC+0)、北京(UTC+8)的时间,并将两点在圆圈的相对位置表示出来,中间展示中国标准时间,即北京时间。
实现思路
构造城市时区映射数据表
创建一个名为TIMEZONE_MAP的哈希映表(HashMap)。用于存储城市与其对应时区的映射关系。
TIMEZONE_MAP是一个键值对组合,其中key时城市名称,value是这些城市所属的时区ID。
实现世界时钟
- 构造时区点的数据结构TimezonePoint,设置向上中心点坐标、外圆坐标、文本坐标。
- 使用Circle()函数,画出世界时钟的形状。
- 构造timezoneCircle()函数,根据获取的圆中心点坐标、中心点坐标等参数,实现时区圆。
- 构造getUtcTime()函数,调用getTime()获取UTC的时间。
- 构造getDateStr()函数,调用getFullYear()/getMonth()/getDate()获取年、月、日数据。
- 构造compareCityTimezone()函数,比较两个时区的时间差值,返回两个时区所差的小时数。
- 构造compareCityDate()函数,比较两个时区的时间差值,返回两个时区的天数区别。