Kotlin - 时间 Duration

一、概念

用于表示时间度量,简化了时间单位的换算、计算时间差、操作间隔、比较等场景。

二、使用

2.1 创建

2.1.1 Number -> Duration

扩展函数适用于 Int、Long、Double。Duration 可以是正、负、零、正无穷大或负无穷大。

nanosecondspublic inline val Int.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)
microsecondspublic inline val Int.microseconds get() = toDuration(DurationUnit.MICROSECONDS)
millisecondspublic inline val Int.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)
secondspublic inline val Int.seconds get() = toDuration(DurationUnit.SECONDS)
minutespublic inline val Int.minutes get() = toDuration(DurationUnit.MINUTES)
hourspublic inline val Int.hours get() = toDuration(DurationUnit.HOURS)
dayspublic inline val Int.days get() = toDuration(DurationUnit.DAYS)
val tenSeconds: Duration = 10.seconds   //打印:10s
val sixMinutes: Duration = 6.minutes   //打印:6m
val negativeOneNanoseconds: Duration = (-1).seconds   //打印:-1ns
val negativeInfiniteDays: Duration = Double.NEGATIVE_INFINITY.days   //打印:-Infinity

2.1.2 String -> Duration 

2.2 转换

2.2.1 Duration -> Number

一个要传单位,一个直接使用。

toXXX(DurationUnit)

public fun toInt(unit: DurationUnit): Int        //使用注意精度不够

public fun toLong(unit: DurationUnit): Long

public fun toDouble(unit: DurationUnit): Double

.inWholeXXX

public val inWholeNanoseconds: Long

public val inWholeMicroseconds: Long

public val inWholeMilliseconds: Long

public val inWholeSeconds: Long

public val inWholeMinutes: Long

public val inWholeHours: Long

public val inWholeDays: Long

val before = 30.minutes
val after1 = before.toLong(DurationUnit.SECONDS) //打印:1800
val after2 = before.inWholeSeconds  //打印:1800

2.2.2 Duration -> String

2.3 四则运算

无论是什么单位都可以相互运算。

val twelveHours = 12.hours
val oneDay = 1.days
val thirtyMilliseconds = 30.milliseconds
val fiveMilliseconds = 5.milliseconds
println(oneDay + twelveHours)   //打印:1d 12h
println(oneDay + thirtyMilliseconds)   //打印:1d 0h 0m 0.03s
println(thirtyMilliseconds / fiveMilliseconds) //  打印:6.0

2.4 逻辑运算

val oneHour = 1.hours
val sixtyMinutes = 60.minutes
val twoHouts = 2.hours
println(oneHour == sixtyMinutes)   //打印:true
println(oneHour > twoHouts)   //打印:false

2.5 解构

分别获取不同单位上的数值,不是整个转换成该单位的数值。

val time = 548341869.seconds
println(time + 0.seconds)   //6346d 13h 11m 9s
time.toComponents { seconds, nanoseconds ->  }
time.toComponents { minutes, seconds, nanoseconds ->  }
time.toComponents { hours, minutes, seconds, nanoseconds ->  }
time.toComponents { days, hours, minutes, seconds, nanoseconds ->println(days)   //6346println(hours)  //13println(minutes)    //11println(seconds)    //9println(nanoseconds)    //0
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

napi系列学习进阶篇——NAPI异步调用

简介 OpenHarmony Napi 标准系统异步接口实现支持Callback方式和Promise方式。标准系统异步接口实现规范要求,若引擎开启Promise特性支持,则异步方法必须同时支持Callback方式和Promise方式。使用哪种方式由应用开发者决定,通过是否传递Call…

SpringMVC--获取请求参数 / 域对象共享数据

目录 1. SpringMVC 获取请求参数 1.1. 通过ServletAPI获取 1.2. 控制器方法形参获取 1.3. RequestParam 1.4. RequestHeader 1.5. CookieValue 1.6. 通过POJO获取请求参数 1.7. 解决获取请求参数的乱码问题 2. 域对象共享数据 2.1. 三大域对象 2.2. 准备工作 2.3. S…

RedisTemplate对象中方法的使用

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Redis是一个key-va…

第二届数据安全大赛暨首届“数信杯”数据安全大赛数据安全积分争夺赛-东区预赛wp

附件下载地址: 链接:https://pan.baidu.com/s/1tClZrup28n4fUe5Kpa7mgQ?pwdkbd6 文章目录 数据安全题re_ds001Homooo0 数据分析题数据分析1-1数据分析1-2数据分析1-3数据分析2-1数据分析2-2数据分析2-3数据分析3-1数据分析3-2数据分析3-3数据分析5-1数据…

【AI基本模型】简化生成对抗网络 (GAN)

目录 一、说明 二、GAN的工作 三、如何手动计算生成对抗网络(GAN)?✍️ 四、GAN的应用 一、说明 生成对抗网络 (GAN) 是一种机器学习算法,可以生成与现实世界数据几乎无法区分的合成数据。它们的工作原理是…

【计算机毕业设计】基于Java+SSM的实战开发项目150套(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 🧡今天给大家分享150的Java毕业设计,基于ssm框架,这些项目都经过精心挑选,涵盖了不同的实战主题和用例,可做毕业设计和课程…

js的filter函数

在JavaScript中,filter() 是一个数组方法,它创建一个新数组,其包含通过提供的函数实现的测试的所有元素。换句话说,filter() 函数遍历数组中的每个元素,并只将那些使测试函数返回 true 的元素包含在新数组中。 这里有…

python画神经网络图

代码1(画神经网络连接图) from math import cos, sin, atan import matplotlib.pyplot as plt # 注意这里并没有用到这个networkx这个库,完全是根据matploblib这个库来画的。 class Neuron():def __init__(self, x, y,radius,nameNone):self.x xself.y …

h5增加的属性、标签和api

新增的属性: data-*属性:用于在HTML元素上存储自定义数据。placeholder属性:用于在表单元素中提供占位符文本。required属性:标记表单元素是否为必填项。autocomplete属性:控制表单元素的自动完成行为。download属性&…

短视频的11个流量密码

01原始欲望 每一个人都想着住豪宅、开豪车、吃大餐、赚大钱、看帅哥美女等,所以当你的视频里出现大量别人没有去过的美景,没有吃过的大餐,没有见过的金钱,和性感妖娆的美女,就会有人想点击去看。 对于男性来说&#…

Unity Android Release-Notes

🌈Android Release-Notes 收集的最近几年 Unity各个版本中 Android的更新内容 💡WebGL Release-Notes 2023 💡WebGL Release-Notes 2022 💡WebGL Release-Notes 2021

单链表的冒泡,选择和插入排序

今天我们来看看单链表排序中的冒泡排序,插入排序,选择排序。 文章目录 冒泡排序交换值交换节点 插入排序交换节点 选择排序交换值交换节点 冒泡排序 交换值 首先我们来看看不交换节点,只进行值交换的形式,与数组下的实现思路一…

文本检索粗读

一.前情提要 1.本文理论为主,并且仅为个人理解,能力一般,不喜勿喷 2.本文理论知识较为散碎 3.如有需要,以下是原文,更为完备 Neural Corpus Indexer 文档检索【论文精读47】_哔哩哔哩_bilibili 二.正文 &#xf…

CommunityToolkit.Mvvm笔记1---Instruction

CommunityToolkit.Mvvm是一个官方社区套件(Windows Community Toolkit),延续了MVVMLight的风格,是一个现代、快速和模块化的 MVVM 库。 它是 .NET 社区工具包的一部分。 第一:入门安装 1,用NuGget安装,搜索Community…

最短响应时间负载均衡算法Golang实现

最短响应时间负载均衡算法(Least Response Time Load Balancing Algorithm),顾名思义,它的主要目标是最小化用户的响应时间。在这种算法下,负载均衡器会跟踪后端服务器的历史响应时间,并将新的连接请求分配…

【菜狗学前端】ES6+笔记(包含Promise及async、await等)

老样子。复制上来的图片都没了,想看原版可以移步对应资源下载(资源刚上传,还在审核中) (免费)菜狗学前端之ES6笔记https://download.csdn.net/download/m0_58355897/89135424 一 解构赋值 解构赋值 解构指的是把一个数据…

马上拥有“钞能力”!!24个Python接单平台,赶紧码住!!

学Python能兼职挣米吗?怎么挣? 一、Python兼职种类: 接私活刚学会python那会,就有认识的朋友介绍做一个网站的私活,当时接单赚了4K,后又自己接过开发网站后台接口、做数据处理等事情,都赚了一…

【AcWing】蓝桥杯集训每日一题Day15|并查集|528.奶酪(C++)

528.奶酪 528. 奶酪 - AcWing题库难度:简单时/空限制:1s / 128MB总通过数:3800总尝试数:10480来源:NOIP2017提高组算法标签并查集BFSDFS 题目内容 现有一块大奶酪,它的高度为 ℎ,它的长度和宽…

Java并发编程和JUC

Java并发编程、JUC(java.util.concurrent包) 参考:JUC详解 概念辨析 进程、线程、管程 进程 进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。 它是操作系统动态执行的基本单元,是操作系统…

【机器学习300问】66、均方误差与交叉熵误差,两种损失函数的区别?

一、均方误差(Mean Squared Error, MSE) 假设你是一个教练,在指导学生射箭。每次射箭后,你可以测量子弹的落点距离靶心的差距(误差)。MSE就像是计算所以射击误差的平方后的平均值。它强调了每一次偏离靶心的…