nscala-time / nscala-time   2.32.0

Apache License 2.0 Website GitHub

A new Scala wrapper for Joda Time based on scala-time

Scala versions: 3.x 2.13 2.12 2.11 2.10

nscala-time

Maven Central scaladoc

A new Scala wrapper for Joda Time. This project forked from scala-time since it seems that scala-time is no longer maintained.

Installation

Add the following to your sbt build:

libraryDependencies += "com.github.nscala-time" %% "nscala-time" % "2.32.0"

if you want to use previous versions, you can find it from here

Release Note

2.18.0

2.16.0

2.14.0

2.12.0

2.10.0

  • adding the flexibility to include format for local date and date time. See scaladoc

2.8.0

2.6.0

2.4.0

2.2.0

2.0.0

1.8.0

1.6.0

1.4.0

  • joda-time 2.4 support

1.2.0

1.0.0

  • Binaries compiled with Scala 2.11.0 are included.
  • #53

0.8.0

Binaries compiled with Scala 2.11.0-M8 are included.

0.6.0

Two major changes has been introduced in 0.6.0:

Although I believe that these changes don't break your code, if you have some problems, don't mind reporting the problem to issues.

Version Numbering Policy

x.y.z, each letter is digit, format is used as version number. Meanings of x is not determined yet.
y means major-version. Note that y is even number in any version of released nscala-time. If y is odd, it's development and/or SNAPSHOT version. z is mainly used for bug fix releases. Currently, the value of z is 0 in most cases.

Usage

This is mostly a convenience wrapper around the Joda Time libraries, adding more pleasant syntax like operators for addition, subtraction, and comparison. Also, most fields usually available as getField are now simply available as field, following the Scala convention. Some instances of asX or toX have also been shortened.

Import

import com.github.nscala_time.time.Imports._

Date/Time Operations

DateTime.now() + 2.months // returns org.joda.time.DateTime = 2009-06-27T13:25:59.195-07:00

DateTime.nextMonth < DateTime.now() + 2.months // returns Boolean = true

DateTime.now() to DateTime.tomorrow  // return org.joda.time.Interval = > 2009-04-27T13:47:14.840/2009-04-28T13:47:14.840

(DateTime.now() to DateTime.nextSecond).millis // returns Long = 1000

2.hours + 45.minutes + 10.seconds
// returns com.github.nscala_time.time.DurationBuilder
// (can be used as a Duration or as a Period)

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

2.months + 3.days
// returns Period

Fluent interface

DateTime.now() // returns org.joda.time.DateTime = 2009-04-27T13:25:42.659-07:00

DateTime.now().hour(2).minute(45).second(10) // returns org.joda.time.DateTime = 2009-04-27T02:45:10.313-07:00

Please see Joda Time for full explanation of key concepts and API: https://www.joda.org/joda-time/

Documents

Documentation of joda-time will be also a help.

Motivation

The Java Date and Calendar libraries are largely inadequate. They are mutable, not thread-safe, and very inconvenient to use.

The Joda Time library is a great replacement for Java's Date and Calendar classes. They're immutable by default, have a much richer and nicer API, and can easily be converted to Java's Date and Calendar classes when necessary.

This project provides a thin layer of convenience around the Joda Time libraries, making them more idiomatic to use within Scala.