第二百六十五回 如何获取当前时区


我们在上一章回中介绍了"如何获取当前系统语言"相关的内容,本章回中将介绍 如何获取当前时区.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们使用的北京时间也叫CST,不过它不是国际标准时间,国际标准时间为UTC,我们国家位于东八区,因此也用UTC+8来表示北京时间。不过这种表示方式有时候不够直观,需要我们查阅时区后才能知道。

我们在本章回中介绍的时区主要是时区的标志,比如我们常用的北京时间的时区标志是Asia/Shanghai,从名字上就能直观地看到当前时区所处于的地理位置。本章回中将介绍如何获取这种时区标志。

2. 获取方法

我们可以使用dart中的DateTime类来获取时区,具体代码为:

DateTime.now().timeZoneName

不它获取到的是cst,utc这样的时区,而不是我们想的带有城市名称的时区标志。我查阅了DateTime类的所有接口,没有找到可以获取到时区标志的方法。于是只好在pub中查找,

功夫不负有心人,终于找到了一个可以获取时区标志的三方包:flutter_timezone,通过包中的getLocalTimezone()方法可以获取当前的时区标志。

3. 示例代码

var timeZone = FlutterTimezone.getLocalTimezone().then((value){
  debugPrint("future timeZone: ${value.toString()}");
});

void getTimeZone () async {
  ///获取时区,输出:async timeZone: Asia/Shanghai
  var value = await FlutterTimezone.getLocalTimezone();
  debugPrint("async timeZone: ${value.toString()}");
}

我们在上面的示例代码中演示了两种获取时区标志的方法,它们都使用了异步的方法去获取到时区标志,只是表现形式不同而已。

4. 对比与总结

4.1 横向对比

Java中的时间类相比,dart中的时间类功能比较少,比如本章回中获取时区标志还需要借助三方包来实现。其实在Java8之前的时间类也不是很好用,直到Java8才对时间类有了比较大的更新。我预测dart在未来的版本中还会对时间类做更新。

此外,我们虽然通过三方包获取到时区标志了,但是需要通过异步的方式来获取,我感觉时区完全可以通过当前时间计算出来,为什么要做成异步的机制?使用起来十分不方便,对比一下Java中的时间类,可以直接获取到时区标记。

4.2 内容总结

最后,我们对本章回中的内容做一个全面的总结:

  • 使用DateTiem类可以获取到时区名称,比如utc,cst;
  • 使用三方包flutter_timezone可以获取时区标志;
  • 获取时间标志时需要使用异步的方式,不然无法获取到时区标志;

看官们,与"如何获取当前时区"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值