需要澄清时间的使用 class

Clarification is needed on the use of the Time class

Time class 允许获取标准时间参数达秒:

main :
  time := Time.now.local
  print "Time: $(%02d time.h):$(%02d time.m):$(%02d time.s) $(time.ns)"
  print "Date: $(%04d time.year)-$(%02d time.month)-$(%02d time.day)"

输出:

Time: 07:43:10 96212801
Date: 2021-04-18

还有一个 time.ns 参数,这显然允许在 micro & [=25 中获得额外的时间分辨率=]milli 秒。显然可以这样做:

main :
  time := Time.now.local
  ms := time.ns / Duration.NANOSECONDS_PER_MILLISECOND
  us := time.ns / Duration.NANOSECONDS_PER_MICROSECOND
  print "Time: $(%02d time.h):$(%02d time.m):$(%02d time.s) $(ms) $(us)"

输出:

Time: 13:13:00 721 721000

不过,我还是有疑惑。你能建议正确的解决方案吗? 提前致谢,MK

你完全正确。

Time.now.local returns a TimeInfo class (https://libs.toit.io/core/time/class-TimeInfo) 只有 ns 而没有 ms 或者us.

您正在正确计算 msus 的值:

ms := time.ns / Duration.NANOSECONDS_PER_MILLISECOND
us := time.ns / Duration.NANOSECONDS_PER_MICROSECOND

您可以将其中一个附加到 stringify 的输出以使其更精确:

more_precise_ms := "Time: $(%02d time.h):$(%02d time.m):$(%02d time.s).$(%03d ms)
more_precise_us := "Time: $(%02d time.h):$(%02d time.m):$(%02d time.s).$(%06d ns)

第一个会产生:Time: 13:13:00.721,第二个:Time: 13:13:00.721000

如果您想分别显示毫秒和纳秒,则需要从微秒部分中删除毫秒:

ms := time.ns / Duration.NANOSECONDS_PER_MILLISECOND
remaining_ns := time.ns % Duration.NANOSECONDS_PER_MILLISECOND
us := remaining_ns / Duration.NANOSECONDS_PER_MICROSECOND

然后您可以使用它来打印如下:

print "Time: $(%02d time.h):$(%02d time.m):$(%02d time.s) $(%03d ms)ms $(%03d us)us"

导致:Time: 13:13:00 721ms 000us