DateTime.now.hour(0)如何在nscala-time中获取新的DateTime?

时间:2015-06-11 01:46:46

标签: scala datetime jodatime nscala-time

我使用来自https://github.com/nscala-time/nscala-time的nsacala-time软件包。

import com.github.nscala_time.time.Imports._
DateTime.now.hour(0)
res0: org.joda.time.DateTime = 2015-06-11T22:33:52.266+08:00

将获得一个新的DateTime对象。 但是在源代码https://github.com/nscala-time/nscala-time/blob/master/src/main/scala/com/github/nscala_time/time/RichDateTime.scala中,它没有带签名(Int)的小时函数。 似乎withHour(小时:Int)做了确切的工作。

1 个答案:

答案 0 :(得分:2)

无处不在的转换(a.k.a Black Magic,a.k.a为什么每个人都讨厌Scala)!!!

  1. hour会返回org.joda.time.DateTime.Property

  2. Import._导入RichDateTimeProperty

  3. RichDateTimeProperty定义了apply方法,默认情况下,如果something()不是something方法转换为something.apply(),则Scala执行def apply(value: Int): DateTime = underlying.setCopy(value) ,所以最后通过2次隐式转换调用此方法:

    {{1}}