https://addinbox.sakura.ne.jp/holiday_logic.htm の Scala 移植版です。
- ※山の日 対応
- ※東京五輪 臨時祝日 / 体育の日 改名 対応
- ※生前退位 / 皇位継承 対応
- ※2019年 臨時休日 対応
- ※2021年 東京五輪特措法の改正案 対応
以下の記述を build.sbt
に足してください。
Scala 2.11.x, 2.12.x, 2.13.x, 3.x.y に対応しています。
libraryDependencies += "jp.t2v" %% "holidays" % "7.1"
Holidaysの依存に nscala-time が含まれなくなったため、個別に nscala-time か joda-time を依存性に追加してください。 Scala 2.11.x, 2.12.x, 2.13.x, 3.x.y に対応しています。
libraryDependencies += "jp.t2v" %% "holidays" % "7.1"
libraryDependencies += "com.github.nscala-time" %% "nscala-time" % "2.22.0"
import java.time.LocalDate
import jp.t2v.util.locale.Implicits._
LocalDate.now().holidayName // Option[String] で休日名
LocalDate.now().isHoliday // Boolean
LocalDate.of(2012, 9, 22).holidayName // Some("秋分の日")
LocalDate.of(2009, 5, 6).holidayName // Some("振替休日")
LocalDate.of(2012, 9, 10).holidayName // None
LocalDate
の他に LocalDateTime
および ZonedDateTime
をサポートしています。
import com.github.nscala_time.time.Imports._
import jp.t2v.util.locale.Implicits._
DateTime.now.holidayName // Option[String] で休日名
DateTime.now.isHoliday // Boolean
new LocalDate(2012, 9, 22).holidayName // Some("秋分の日")
new LocalDate(2009, 5, 6).holidayName // Some("振替休日")
new LocalDate(2012, 9, 10).holidayName // None
LocalDate
の他に DateTime
をサポートしています。
import java.time.LocalDate
import jp.t2v.util.locale.Holidays
Holidays(LocalDate.of(2012, 9, 22)) // Some("秋分の日")
Holidays(LocalDate.of(2009, 5, 6)) // Some("振替休日")
Holidays(LocalDate.of(2012, 9, 10)) // None
import com.github.nscala_time.time.Imports._
import jp.t2v.util.locale.Holidays
Holidays(new LocalDate(2012, 9, 22)) // Some("秋分の日")
Holidays(new LocalDate(2009, 5, 6)) // Some("振替休日")
Holidays(new LocalDate(2012, 9, 10)) // None
LocalDate
の他に DateTime
をサポートしています。
import java.time.LocalDate
import jp.t2v.util.locale.Holidays
val start = LocalDate.of(2012, 4, 28)
val end = LocalDate.of(2012, 5, 6)
val days: Seq[LocalDate] = Stream.iterate(start)(_.plusDays(1)).takeWhile(end >)
val names = days.map {
case Holidays(name) => name
case _ => "平日"
}
names == Seq("平日", "昭和の日", "振替休日", "平日", "平日", "憲法記念日", "みどりの日", "こどもの日")
Java8 LocalDate
, LocalDateTime
, ZonedDateTime
および Joda-Time LocalDate
, DateTime
をサポートしています。
LocalDateConverter
という型クラスが用意されています。
abstract class LocalDateConverter[A] {
def apply(value: A): java.time.LocalDate
}
独自の日時データ型に対して LocalDateConverter
の型クラスインスタンスを定義することで、独自の日時データ型からも利用できるようになります。