/scala-datetime

Primary LanguageScalaBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Scala Date&Time

Goals: 
 - Perfect Scala integration (Pattern matching, case classes, implicits, builders & factories, 
   collection integration, default and names parameters, etc. ...).
 - Code shall be Scala only to be reasonably platform-independent.

Status:
 - It does compile! But if you need something useable NOW, this is not the place to look.
 - The source code is based on the Date&Time library (JSR-310) and was translated to Scala 
   (mostly automatic, with quite some help from IntelliJ's "Convert Java to Scala" functionality).
 - All code is syntactically valid Scala code.
 - Overloaded methods were replaced by methods with default arguments.
 - java.io.Serializable was replaced by scala.Serializable.
 - java.lang.Comparable was replaced by scala.math.Ordered.
 - Enums have been replaced by objects extending sealed/abstract classes. 
   Bug #4023 blocks further progress. 
 - Class hierarchy and naming has not yet been changed.
 - Most of the static initializers and classes with multiple constructors are fixed, 
   but a few tricky ones remain (especially exceptions).
 - Usages of BigInteger/BigDecimal are replaced by BigInt/BigDecimal.
 - Some algorithms could need further cleanup.
 - Instances of Java's "constructor arguments + field + getter" pattern are already replaced 
   by class Foo(val bar: ...) or similiar.
 - The code has a few places where Java collections instead of Scala collections are used.
 - A few places with "continue" need investigation to be replaced.
 - The Scala packages still have the "javax.time" namespace.
 - The code uses almost no implicits. These will be added in the future (think of "5.seconds" or "7.days"), 
   when things are a bit further down the road.
 - Methods returning something like "Integer (or null)" have been replaced by "Option[Int]".
 - There are some classes which do some "reification" magic. 
   These might be replaced by a simple Manifest.
 - ResourceZoneRulesDataProvider, StandardZoneRules, PeriodUnit and 
   TZDBZoneRulesCompiler need additional attention.
 - JavaDoc-style comments need to converted to ScalaDoc-style comments.

I did the whole thing for fun and curiosity.

Advice, comments, criticism, contributions and help is welcome!