/chronoscala

A JSR-310 port of nscala_time

Primary LanguageScalaMIT LicenseMIT

chronoscala

GitHub Actions Workflow Status Maven Central Version

A JSR-310 port of nscala_time

Supported environment

  • Scala 2.12.x / 2.13.x / 3.x.x
    • Requries Java 8 or later
  • Scala.js
  • Scala Native

Installation

libraryDependencies += "io.github.chronoscala" %% "chronoscala" % LATEST_VERSION

Usage

import io.github.chronoscala.Imports._

ZonedDateTime.now() + 2.months // returns java.time.ZonedDateTime = 2016-09-12T02:24:22.724+09:00[Asia/Tokyo]

OffsetDateTime.now() + 2.months // returns java.time.OffsetDateTime = 2016-09-12T02:24:22.724+09:00

ZonedDateTime.now() < ZonedDateTime.now() + 1.month // returns true

ZonedDateTime.now() to (ZonedDateTime.now() + 1.day) // returns Interval(2016-07-11T19:15:42.641Z,2016-07-12T19:15:42.641Z)

(ZonedDateTime.now() to (ZonedDateTime.now() + 1.second)).millis // returns 1000

2.hours + 45.minutes + 10.seconds // returns PT2H45M10S

(2.hours + 45.minutes + 10.seconds).millis // returns 9910000

2.months + 3.days // returns P2M3D

LocalDate.now() to (LocalDate.now() + 7.days) by 2.days // returns DateInterval(2016-09-04, 2016-09-06, 2016-09-08, 2016-09-10)

Chronoscala also provides NamespacedImports to avoid conflicts between other package such as scala.concurrent.duration.

import io.github.chronoscala.NamespacedImports._

// Methods are namespaced with `cs`.
2.cs.months + 3.cs.days // returns P2M3D

2L.cs.seconds + 3L.cs.seconds // returns PT5S

ClockProvider

ClockProvider is useful for unit testing.

import io.github.chronoscala.Imports._
import io.github.chronoscala.ClockProvider

ClockProvider.setCurrentClockFixedMillis(0L)

Instant.now() // returns 1970-01-01T00:00:00Z