scala Calendar中获取月份遇到“坑”

calendar.get(Calendar.MONTH) 
月份是从0开始的  你设置是12 其实系统以为是1月,所以用0来表示1月,你如果想表示12月那就应该设置calendar.set(2011,11,31);  这样就会读出来是数字12 


之前没有写过这样的函数,结果在HIVE里面查找分区,结果发现经常出错,其原因居然在于这个地方。后面直接+1就成功解决了。


scala> import java.util.{Calendar, Date}
import java.util.{Calendar, Date}


scala> val cal = Calendar.getInstance()
cal: java.util.Calendar = java.util.GregorianCalendar[time=1459391506269,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=2,WEEK_OF_YEAR=14,WEEK_OF_MONTH=5,DAY_OF_MONTH=31,DAY_OF_YEAR=91,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=5,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=31,SECOND=46,MILLISECOND=269,ZONE_OFFSET=28800000,DST_OFFSET=0]


scala> cal.setTimeInMillis(ts*1000L)


scala> val year:Int = cal.get(Calendar.YEAR)
year: Int = 2015


scala>     val month:Int = cal.get(Calendar.MONTH)
month: Int = 9


scala>     val day1:Int = cal.get(Calendar.DAY_OF_MONTH)
day1: Int = 2


scala> val ts2 = 1441123200L;
ts2: Long = 1441123200


scala> cal.setTimeInMillis(ts2*1000L)


scala>     val month:Int = cal.get(Calendar.MONTH)
month: Int = 8


scala> val ts3=1420041600L
ts3: Long = 1420041600


scala> cal.setTimeInMillis(ts3*1000L)


scala>     val month:Int = cal.get(Calendar.MONTH)
month: Int = 0


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值