import java.util.Date
object Main {
def main(args: Array[String]): Unit = {
// format は Date に限らない文字列用の機能です。
println("%d-%d-%d" format (1, 1, 1)) //=> 1-1-1
println("%d-%<d-%<d" format (1)) //=> 1-1-1
// 日付用のフォーマット
println("%tF" format new Date) //=> 2016-01-31
println("%tY-%<tm-%<td %<tH:%<tM:%<tS %<tZ %<tz" format new Date) //=> 2016-01-31 11:32:36 JST +0900
}
}
高機能な日付関連の処理用ライブラリ Joda-Time を使用する例を記載します。
pom.xml (maven)
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.joda</groupId>
<artifactId>joda-convert</artifactId>
<version>1.8</version>
</dependency>
build.sbt (sbt)
libraryDependencies ++= Seq(
"joda-time" % "joda-time" % "2.9.2",
"org.joda" % "joda-convert" % "1.8" // http://www.joda.org/joda-convert/
)
Main.scala
import org.joda.time.{DateTime, DateTimeZone}
object Main {
def main(args: Array[String]): Unit = {
// Date からの変換
val juDate = new java.util.Date()
val dt = new DateTime(juDate)
// 数値からの変換
val dt2 = new DateTime(9999, 12, 31, 23, 59, 59)
// タイムゾーン指定
val jst = new DateTime(DateTimeZone.forID("Asia/Tokyo"))
val utc = new DateTime(DateTimeZone.UTC)
// 文字列に変換
val now = new DateTime
println(now.toString("yyyy/MM/dd HH:mm:ss ZZ")) //=> 2016/01/31 14:39:13 +09:00
// 加減算の例
var _dt = dt.plusYears(1)
_dt = dt.plusMonths(-1)
_dt = dt.minusDays(1)
// 数値に変換
println(dt.getYear()) //=> 2016
println(dt.getMonthOfYear()) //=> 1
println(dt.getDayOfMonth()) //=> 31
println(dt.getMillis()) // タイムスタンプ (1970/1/1 からのミリ秒) 1454218982482
}
}