Kronos-Multiplatform

Facilitates network time synchronization by extending the `kotlinx-datetime` library with a `NetworkClock` class to retrieve and synchronize network time across Android, iOS, and desktop platforms.

Android JVMJVMKotlin/Native
GitHub stars25
Authorssoftartdev
Dependents0
Creation dateover 3 years ago

Last activity7 months ago
Latest release0.0.2 (about 1 year ago)

Kronos Multiplatform Library

Maven Central Build & Publish CI/CD

Kotlin Multiplatform library for network time synchronization. It extends the kotlin.time API and supports the following platforms:

  • Android
  • iOS
  • Desktop JVM (MacOS, Linux, Windows)

Usage

kotlin.time Extension

The library extends the main Clock interface from the standard library. You can use the Clock.Network class to retrieve the current network time, similar to using the built-in Clock.System instance.

val networkTime: Instant = Clock.Network.now()  // 2025-06-30T13:42:43.712Z
val systemTime: Instant = Clock.System.now()    // 2025-06-30T13:42:43.566455Z
val diff: Duration = networkTime - systemTime   // 145.545ms

Synchronization

When running the application, it's necessary to synchronize the time with the network using the platform-specific code:

  • Android:
class App : Application() {
    override fun onCreate() {
        super.onCreate()
        Clock.Network.sync(applicationContext)
    }
}
  • iOS:
@main
struct iosApp: App {
    init() {
        Clock.Network.sync()
    }
    var body: some Scene { ... }
}
  • Desktop JVM:
fun main() {
    Clock.Network.sync()
    ...
}

Installation

The latest release is available on Maven Central.

  1. Add the Maven Central repository if it is not already included:
repositories {
    mavenCentral()
}
  1. In multiplatform projects, add the following dependency to the commonMain source set dependencies:
commonMain {
    dependencies {
        implementation("io.github.softartdev:kronos:$latestVersion")
    }
}

Implementation

The main common interface is implemented using the following:

The project is built and tested using the following:

Android JVMJVMKotlin/Native
GitHub stars25
Authorssoftartdev
Dependents0
Creation dateover 3 years ago

Last activity7 months ago
Latest release0.0.2 (about 1 year ago)

Kronos Multiplatform Library

Maven Central Build & Publish CI/CD

Kotlin Multiplatform library for network time synchronization. It extends the kotlin.time API and supports the following platforms:

  • Android
  • iOS
  • Desktop JVM (MacOS, Linux, Windows)

Usage

kotlin.time Extension

The library extends the main Clock interface from the standard library. You can use the Clock.Network class to retrieve the current network time, similar to using the built-in Clock.System instance.

val networkTime: Instant = Clock.Network.now()  // 2025-06-30T13:42:43.712Z
val systemTime: Instant = Clock.System.now()    // 2025-06-30T13:42:43.566455Z
val diff: Duration = networkTime - systemTime   // 145.545ms

Synchronization

When running the application, it's necessary to synchronize the time with the network using the platform-specific code:

  • Android:
class App : Application() {
    override fun onCreate() {
        super.onCreate()
        Clock.Network.sync(applicationContext)
    }
}
  • iOS:
@main
struct iosApp: App {
    init() {
        Clock.Network.sync()
    }
    var body: some Scene { ... }
}
  • Desktop JVM:
fun main() {
    Clock.Network.sync()
    ...
}

Installation

The latest release is available on Maven Central.

  1. Add the Maven Central repository if it is not already included:
repositories {
    mavenCentral()
}
  1. In multiplatform projects, add the following dependency to the commonMain source set dependencies:
commonMain {
    dependencies {
        implementation("io.github.softartdev:kronos:$latestVersion")
    }
}

Implementation

The main common interface is implemented using the following:

The project is built and tested using the following: