时区问题
时间戳没有时区问题,一般存储时间时会使用时间戳进行存储。
时区时间
如北京时间为东八区的时间
如果前端在显示时间时,是服务端直接返回的时间字符串,那么这个时间很有可能就固定是某一个时区的时间。即使在不同的地区也可能看见相同的时间。对于这种,通常在显示时都需要标明北京时间xxx。
设备本地时间
设备本地时间即是根据时间戳,前端进行转换的对应时区的时间。
这种情况,一般传输的时间为时间戳格式。在前端进行格式化展示时,会转换成对应时间,因此在不同的时区,那么显示的格式化后的时间就会不一样。
case
- 当客户端不在东八区时,客户端传给服务端使用时间戳格式上传。服务端返回时进行了格式话字符串处理,这种情况就会出现“时间差”。因为当服务器在国内时,时间戳转换成时间字符串时,会按照东八区进行转换。这样渲染的时间跟当时上传的时间就表现上不一样了。
多语言问题
对于国际化开发来讲,多语言适配是肯定需要做的事情了。对于前端实现上,多语言切换已经有很多方案了。
实现方案
- 服务端适配多语言
对于一些动态信息(由服务端返回)。这里一般采用服务端进行多语言适配。那么,前端所做的就需要在请求接口时,带上当前的语言环境标识即可。
- 前端获取语言环境
- 对于 pc 上,通常可以通过 navigator.language / navigator.languages 获取当前语言环境。
- 对于 移动端 H5,一般客户端会设置 Navigator.userAgent 带上语言标识 Language/en ProductType/rc Region/CN NebulaX/1.0.0。