在角色 Dateish 中§
有关方法 earlier,请参阅主要文档 in context
multi method earlier(Dateish: *)multi method earlier(Dateish: )
返回一个基于当前对象的对象,但应用了朝向过去的日期增量。除非给定的单位是second
或seconds
,否则给定的值将被转换为 Int
。有关用法,请参阅 .later
。它通常将通过实现此角色的类(Date
或 DateTime
)使用。
my = Date.new('2015-02-27');say .earlier(month => 5).earlier(:2days); # OUTPUT: «2014-09-25»my = DateTime.new(date => Date.new('2015-02-27'));say .earlier(month => 1).earlier(:2days); # OUTPUT: «2015-01-25T00:00:00Z»
如果结果时间秒值为60
,但实际上没有闰秒,则秒将设置为59
say DateTime.new('2008-12-31T23:59:60Z').earlier: :1day;# OUTPUT: «2008-12-30T23:59:59Z»
允许负偏移,但 later 是更习惯的用法。
如果您需要使用多个单位,则需要将它们构建到 List
的 Pair
中,以使用该方法的第二种形式
say Date.new('2021-03-31').earlier( ( year => 3, month => 2, day => 8 ) ); # OUTPUT: «2018-01-23»
此功能在 Rakudo 编译器的 2021.02 版本中引入。