A Kotlin multi-platform time library.
This library expands on the Kotlin Duration and kotlinx.datetime library.
An early look into the development of this library is discussed in this article which was featured in Android Weekly issue #401.
Note that this library has changed focus since this article was written, because the kotlinx.datetime library has been introduced since then.
This library expands on the kotlinx datetime library by providing additional components and utilities, including:
A TimeProvider
extends from kotlin.time.TimeSource
and kotlinx.datetime.Clock
. This may provide additional
functionality in the future. A TimeProvider
can be obtained via the TimeProvider
function:
val timeProvider = TimeProvider()
val duration = timeProvider.elapsedSystemTime
The TimeFormatter
interface provides a way to format time values:
val formatter = TimeFormatter("EEEE, MMM d, yyyy")
formatter.invoke(instant, timeZone)
The library provides common coroutines and Flow time based utilities, such as the following:
intervalFlow(period = 30.seconds)
timerFlow(duration = 2.minutes)
scheduleFlow(dateTimeString)
myFlow.timeout(30.seconds)
myFlow.timedValue()
poll(period = 10.seconds) { myFlow }
Refer to the FlowUtils
Kotlin file in the time-core
package for more information on the functions.
The library is provided through repsy. Refer to
the releases page for the latest version.
repositories {
maven { url = uri("https://repo.repsy.io/mvn/chrynan/public") }
}
implementation("com.chrynan.time:time-core:$VERSION")
Refer to the docs folder for documentation and more information about the library.
Copyright 2021 chRyNaN
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.