minitime


License

License

Categories

Categories

Net
GroupId

GroupId

net.pishen
ArtifactId

ArtifactId

minitime_sjs0.6_2.12
Last Version

Last Version

0.3.0
Release Date

Release Date

Type

Type

jar
Description

Description

minitime
minitime
Project URL

Project URL

https://github.com/pishen/minitime
Project Organization

Project Organization

net.pishen
Source Code Management

Source Code Management

https://github.com/pishen/minitime.git

Download minitime_sjs0.6_2.12

How to add to project

<!-- https://jarcasting.com/artifacts/net.pishen/minitime_sjs0.6_2.12/ -->
<dependency>
    <groupId>net.pishen</groupId>
    <artifactId>minitime_sjs0.6_2.12</artifactId>
    <version>0.3.0</version>
</dependency>
// https://jarcasting.com/artifacts/net.pishen/minitime_sjs0.6_2.12/
implementation 'net.pishen:minitime_sjs0.6_2.12:0.3.0'
// https://jarcasting.com/artifacts/net.pishen/minitime_sjs0.6_2.12/
implementation ("net.pishen:minitime_sjs0.6_2.12:0.3.0")
'net.pishen:minitime_sjs0.6_2.12:jar:0.3.0'
<dependency org="net.pishen" name="minitime_sjs0.6_2.12" rev="0.3.0">
  <artifact name="minitime_sjs0.6_2.12" type="jar" />
</dependency>
@Grapes(
@Grab(group='net.pishen', module='minitime_sjs0.6_2.12', version='0.3.0')
)
libraryDependencies += "net.pishen" % "minitime_sjs0.6_2.12" % "0.3.0"
[net.pishen/minitime_sjs0.6_2.12 "0.3.0"]

Dependencies

compile (3)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.12.9
org.scala-js : scalajs-library_2.12 jar 0.6.28
io.github.cquiroz : scala-java-time_sjs0.6_2.12 jar 2.0.0-RC1

test (2)

Group / Artifact Type Version
org.scala-js : scalajs-test-interface_2.12 jar 0.6.28
org.scalatest : scalatest_sjs0.6_2.12 jar 3.0.8

Project Modules

There are no modules declared in this project.

Minitime

Build Status

A Scala/Scala.js library which lets you operate on time and dates easily using +, -, *, /, >, <, to, sortBy, and more.

This library is a Scala wrapper around Java 8 Time API, with Scala.js implementation supported by scala-java-time.

Inspired by time for scala and chronoscala, I tried to provide additional features like time range (t1 to t2 by 3.hours) and Ordering typeclasses.

Installation

libraryDependencies += "net.pishen" %% "minitime" % "0.3.0"

// for Scala.js
libraryDependencies += "net.pishen" %%% "minitime" % "0.3.0"

Instantiation

import minitime._

val ld1 = LocalDate.now
val ld2 = LocalDate(2007, 8, 31)
val ld3 = LocalDate.parse("2018-03-09")

val ldt = LocalDateTime(2016, 7, 30, 19, 30, nano = 30000)

val lt = LocalTime.parse("12:35")

val zdt = ZonedDateTime.parse("2012-01-27T00:00:00.000000+09:00")

val d1: Duration = 1.hour
val d2: Duration = 2.minutes
val d3: Duration = 3.millis
val d4: Duration = Duration.parse("PT3S")

val p1: Period = 1.day
val p2: Period = 2.weeks
val p3: Period = 3.months
val p4: Period = Period(years = 1, months = 2, days = 3)

Basic Arithmetic

LocalDate(2018, 1, 31) + 1.day * 2
// 2018-02-02

LocalDate(2018, 4, 30) - 2.month
// 2018-02-28

LocalDateTime(2018, 8, 31, 23, 59) + 1.minute + 3.seconds
// 2018-09-01T00:00:03

LocalDate(2018, 3, 1) - LocalDate(2018, 2, 1)
// P28D

LocalDateTime.parse("2018-09-01T15:39:39") - LocalDateTime(2018, 8, 31, 0, 0)
// java.time.Duration = PT39H39M39S

3.minutes / 2 + 3.seconds * 3
// java.time.Duration = PT1M39S

Ordering

3.minutes < 3.hours
// true

LocalDate(2018, 3, 9) <= LocalDate(2017, 8, 31)
// false

Seq(1.hour, 2.minutes, 3.seconds).sorted
// List(PT3S, PT2M, PT1H)

Set(LocalDate(2018, 8, 29), LocalDate(2018, 8, 30), LocalDate(2018, 8, 31)).max
// 2018-08-31

Note that Ordering.Implicits.infixOrderingOps is automatically imported to make the operations >, <, >=, <=, max, min available. If you don't want this feature or you met some ambiguous implicit conversions, remove the auto import using import minitime.{infixOrderingOps => _, _}.

TimeRange

LocalDate.parse("2018-01-01") to LocalDate.parse("2018-01-05")
// TimeRange(2018-01-01, 2018-01-02, 2018-01-03, 2018-01-04, 2018-01-05)

LocalDate.parse("2018-01-01") till LocalDate.parse("2018-01-05")
// TimeRange(2018-01-01, 2018-01-02, 2018-01-03, 2018-01-04)

LocalDate.parse("2018-01-01") to LocalDate.parse("2018-01-05") by 2.days
// TimeRange(2018-01-01, 2018-01-03, 2018-01-05)

LocalDate.parse("2018-01-31") to LocalDate.parse("2018-05-01") by 1.month
// TimeRange(2018-01-31, 2018-02-28, 2018-03-31, 2018-04-30)

LocalDateTime.parse("2018-01-01T00:00:00") till LocalDateTime.parse("2018-01-01T00:00:03")
// TimeRange(2018-01-01T00:00, 2018-01-01T00:00:01, 2018-01-01T00:00:02)

LocalDateTime.parse("2018-01-01T00:00") to LocalDateTime.parse("2018-01-01T06:00") by 2.hour
// TimeRange(2018-01-01T00:00, 2018-01-01T02:00, 2018-01-01T04:00, 2018-01-01T06:00)

TimeRange[T] extends Seq[T], with a constant time apply() and linear time length().

Versions

Version
0.3.0
0.2.1
0.2.0
0.1.0