如何使用scala中的日历设置小时

如何使用scala中的日历设置小时,scala,calendar,Scala,Calendar,我在scala中有以下代码: import java.util.Calendar var calendar = Calendar.getInstance(); var lastTimeProcessed = calendar.set(Calendar.HOUR_OF_DAY, 0) 在spark shell中,在创建lastTimeProcessed之后,这个变量看起来像是Unit,但我想要的是初始化为00:00 这是控制台结果: lastTimeProcessed: Unit = () 我

我在scala中有以下代码:

import java.util.Calendar
var calendar = Calendar.getInstance();
var lastTimeProcessed = calendar.set(Calendar.HOUR_OF_DAY, 0)
在spark shell中,在创建lastTimeProcessed之后,这个变量看起来像是Unit,但我想要的是初始化为00:00

这是控制台结果:

lastTimeProcessed: Unit = ()

我做错了什么?

set
会改变实例的状态,并将
单元作为输出类型返回

日历的状态已更改。现在打印
日历
,查看新的变异状态

calendar.getTime
将显示设置日中小时后的时间

 scala> calendar.get(Calendar.HOUR_OF_DAY)
 res12: Int = 0

日历集返回void,但它确实会根据此运行更改HOUR\u of_DAY或MINUTE的值:

scala> import java.util.Calendar
import java.util.Calendar

scala> var calendar = Calendar.getInstance();
calendar: java.util.Calendar = java.util.GregorianCalendar[time=1474194792722,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Manila",offset=28800000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=8,WEEK_OF_YEAR=39,WEEK_OF_MONTH=4,DAY_OF_MONTH=18,DAY_OF_YEAR=262,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=33,SECOND=12,MILLISECOND=722,ZONE_OFFSET=28800000,DST_OFFSET=0]

scala> var lastTimeProcessed = calendar.set(Calendar.HOUR_OF_DAY, 0)
lastTimeProcessed: Unit = ()

scala> calendar
res0: java.util.Calendar = java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Manila",offset=28800000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=8,WEEK_OF_YEAR=39,WEEK_OF_MONTH=4,DAY_OF_MONTH=18,DAY_OF_YEAR=262,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=6,HOUR_OF_DAY=0,MINUTE=33,SECOND=12,MILLISECOND=722,ZONE_OFFSET=28800000,DST_OFFSET=0]

scala> calendar.set(Calendar.MINUTE, 0)

scala> calendar
res2: java.util.Calendar = java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Manila",offset=28800000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=8,WEEK_OF_YEAR=39,WEEK_OF_MONTH=4,DAY_OF_MONTH=18,DAY_OF_YEAR=262,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=6,HOUR_OF_DAY=0,MINUTE=0,SECOND=12,MILLISECOND=722,ZONE_OFFSET=28800000,DST_OFFSET=0]

一个未经请求的建议,使用joda时间图书馆

是的,你说得对。但是如何从中得到一个变量,比如00:00?这只是为了过滤数据,例如,从00:00到02:00,您将无法使用对Calendar对象的一个方法调用获得格式化值“00:00”。我们可能会猜测您想要什么,但您应该使用java.util.Calendar和java.text.simpleDataFormat搜索示例,然后更清楚地说明问题。您真的只想将日期格式化为字符串吗?这可能不是用于过滤数据的最有用的形式(请参阅下面的评论)。