第二百零八回 关于时间戳的问题

本文详细介绍了在Flutter中使用DateTime类获取时间和指定日期的时间戳,以及与Java的对比,突出了Dart语言的便捷性。通过示例代码展示了不同语言的实现方式和注意事项。
摘要由CSDN通过智能技术生成


我们在上一章回中介绍了"如何解决组件重名的问题"相关的内容,本章回中将 介绍时间戳.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在本章回中介绍的时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。在实际项目中会使用时间戳来签名或者做加密。其实在第二百六十八回中我们就介绍过它的概念和用法,本章回中是在原来内容的基础上做一些补充。

2. 方法与细节

2.1 获取方法

获取时间戳的方法主要通过DataTime类实现,直接通过类中的成员就可以获取到,我们在这里就不介绍具体的方法了,大家可以参考二百六十八回章回中的内容。

2.2 使用细节

在大部分情况下,我们会获取当前日期的时间戳,不过有时候需要获取指定日期的时间戳,此时需要通过DataTimeutc方法指定具体的日期和时间。该方法使用方便,它的参数包含年月日和时分秒。下面是该方法的函数原型:

  DateTime.utc(int year,
      [int month = 1,
      int day = 1,
      int hour = 0,
      int minute = 0,
      int second = 0,
      int millisecond = 0,
      int microsecond = 0])
      : this._internal(year, month, day, hour, minute, second, millisecond,
            microsecond, true);

与Java中获取时间戳的方法对比,该方法确实方便一些。我们将在稍后的小节中通过示例代码来比较。

3. 示例代码

///基本用法:获取带时区的时间戳
DateTime.now().millisecondsSinceEpoch;
///获取不带时区的时间戳
DateTime.now().toUtc().millisecondsSinceEpoch;

///java8获取时间戳的代码,与dart对比一下
long timestamp = Instant.now().getEpochSecond();
long timestamp1 = Instant.parse("2024-04-14T10:50:00.000000000Z").getEpochSecond();

LocalDate localDate = LocalDate.of(2024,4,14);
long timestamp2 =  localDate.atStartOfDay(ZoneOffset.UTC).toInstant().getEpochSecond();

///获取时间戳,默认带时区,utc方法中的不带时区,而且可以指定到某个时间点的时间戳,
String timeStamp1 = DateTime.utc(2024,4,14,0,0,0,0,0).millisecondsSinceEpoch.toString();
String timeStamp2 = DateTime.utc(2024,4,14,10,50,0,0,0).millisecondsSinceEpoch.toString();

上面的示例代码中演示了Java和dart两种语言获取时间戳的方法。大家可以从代码中看出来dart语言更加方便一些。

此外,在使用Java语言获取时间戳时,我们提供了两种方法,一种通过LocalDate类实现,它的用法接近于dart,另外一种是直接使用Instant类,不过该类的参数不好操作,需要在日期后面加T,而且秒后面还需要加固定长度的数字和Z。不然获取不到正确的时间戳。

4. 内容总结

我们在本章回中的内容是前面章回内容的扩展,本章回中主要介绍了获取指定日期的时间戳。并且把获取时间戳的方法与Java语言做了对比,不过在实际项目中获取指定日期的时间戳这个需求不是很多,因为这个值是一个固定值,使用范围小。

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

  • 在dart中可以通过DateTime类的now方法获取当前的时间戳;
  • 在dart中可以通过DateTime类的utc方法获取指定日期的时间戳;
  • 在获取时间戳的方法上dart语言比java语言方便一些;

看官们,与"关于时间戳的问题"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

talk_8

真诚赞赏,手有余香

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

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

打赏作者

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

抵扣说明:

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

余额充值