有个小需求,获取今天是周几,想我大java,获取一个星期几不是手到擒来。
第一想法,System.currentTimeMillis(),这是个时间戳,还得处理秒数,太麻烦。
第二想法,new Date() deprecated? 好吧。
第三想法,Calendar,简单写下代码,开始调试
1 2 3 |
Calendar calendar = Calendar.getInstance(); int weekDay = calendar.get(Calendar.DAY_OF_WEEK) - 1; |
weekDay = 3,wtf?今天是周二,怎么给了我一个3,只听说过从0、1计数,没听说过从2开始计数的啊!
继续查
国际上是以星期日为一周第一天的开始,Calendar中提供的DAY_OF_WEEK获取的一周也是以星期日作为一周的开始。
而中国的习惯是以星期一作为一周的开始,所以需要根据项目的实际需求来设置。
好吧,真是人生处处皆学问,写代码还能学知识。
怎么办呢?Calendar有个api叫setFirstDayOfWeek,原来从哪一天开始是可以设置的,java也是蛮人性化的么~
1 |
calendar.setFirstDayOfWeek(Calendar.MONDAY); |
继续调试
weekDay = 3
这就有点意思了,这个api是用来看的么? 继续查
官方文档一大堆,概括为:
setFirstDayOfWeek的方法意思只对WEEK_OF_MONTH
与WEEK_OF_YEAR
有作用.
WEEK_OF_MONTH
:当前Calendar日期对象是当前月的第几周.
WEEK_OF_YEAR
:当前Calendar 日期对象是当前年的第几周.
好吧,老老实实写下比较丑陋的代码
1 2 3 4 |
int weekDay = calendar.get(Calendar.DAY_OF_WEEK) - 1; if (weekDay == 0) { weekDay = 7; } |