Skip to content

chRyNaN/time

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

time

A Kotlin multi-platform time library.

GitHub tag (latest by date)

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. Badge

Note that this library has changed focus since this article was written, because the kotlinx.datetime library has been introduced since then.

Using the Library

This library expands on the kotlinx datetime library by providing additional components and utilities, including:

TimeProvider

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

TimeFormatter

The TimeFormatter interface provides a way to format time values:

val formatter = TimeFormatter("EEEE, MMM d, yyyy")

formatter.invoke(instant, timeZone)

Coroutines

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.

Building

The library is provided through repsy. Refer to the releases page for the latest version.
GitHub tag (latest by date)

Repository

repositories {
    maven { url = uri("https://repo.repsy.io/mvn/chrynan/public") }
}

Dependencies

implementation("com.chrynan.time:time-core:$VERSION")

Documentation

Refer to the docs folder for documentation and more information about the library.

License

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.