新人求问一个关于Calendar的问题

a245066003 2017-08-29 10:07:57
package cn.itcast.otherapi;

import java.util.Calendar;

public class CalendarDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub

Calendar c = Calendar.getInstance();

int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DAY_OF_MONTH);
//如何获取星期呢?
int week = c.get(Calendar.WEEK_OF_MONTH);

System.out.println(year+"年"+month+"月"+day+"日"+getWeek(week));
}

private static String getWeek(int i) {
// TODO Auto-generated method stub
String[] weeks = {""+"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

return weeks[i];
}
}
这段代码打印的是:2017年8月29日星期五

问题:我这是根据视频敲的,今天明明是周二,为什么打的是星期五呢?我把本地电脑的时间设置成其他日期,星期也是不对。是什么原因呢?是程序错了吗?小弟看不出来,请各位大神指点下。谢谢了
...全文
219 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝以雪 2017-08-31
  • 打赏
  • 举报
回复
星期要用day of week然后减1,因为是从周日开始的
X元素 2017-08-30
  • 打赏
  • 举报
回复
楼主尝试一下joda time 库类。
幽饮烛 2017-08-30
  • 打赏
  • 举报
回复
因为你用的是 Calendar.WEEK_OF_MONTH,这代表了是当月第几个星期,而不是当天星期几。 要改成 Calendar.DAY_OF_WEEK
「已注销」 2017-08-29
  • 打赏
  • 举报
回复
Map 维护的话,数字 1~12 也可以直接换成中文字,这样多省事,好维护。用那种 +1 的可读性不高,因为 JDK 的文档并未显式说明这个值和实际的月份差 1,不宜通过查看其实际值和月份值的差值进行人工偏移。
「已注销」 2017-08-29
  • 打赏
  • 举报
回复
也不要去用什么 cal.get(Calendar.MONTH) + 1,最好这样用。
static final Map<Integer, String> monthMap = new HashMap<>();
static {
	monthMap.put(Calendar.JANUARY,   1);
	monthMap.put(Calendar.FEBRUARY,  2);
	monthMap.put(Calendar.MARCH,     3);
	monthMap.put(Calendar.APRIL,     4);
	monthMap.put(Calendar.MAY,       5);
	monthMap.put(Calendar.JUNE,      6);
	monthMap.put(Calendar.JULY,      7);
	monthMap.put(Calendar.AUGUST,    8);
	monthMap.put(Calendar.SEPTEMBER, 9);
	monthMap.put(Calendar.OCTOBER,   10);
	monthMap.put(Calendar.NOVEMBER,  11);
	monthMap.put(Calendar.DECEMBER,  12);
};

int monthId = cal.get(Calendar.MONTH);
int nMonth = monthMap.get(monthId);
「已注销」 2017-08-29
  • 打赏
  • 举报
回复
static final Map<Integer, String> weekdayMap = new HashMap<>();
static {
	weekdayMap.put(Calendar.SUNDAY,    "星期日");
	weekdayMap.put(Calendar.MONDAY,    "星期一");
	weekdayMap.put(Calendar.TUESDAY,   "星期二");
	weekdayMap.put(Calendar.WEDNESDAY, "星期三");
	weekdayMap.put(Calendar.THURSDAY,  "星期四");
	weekdayMap.put(Calendar.FRIDAY,    "星期五");
	weekdayMap.put(Calendar.SATURDAY,  "星期六");
};

int weekdayId = cal.get(Calendar.DAY_OF_WEEK);
String weekdayName = weekdayMap.get(weekdayId);
zxjuanjuan 2017-08-29
  • 打赏
  • 举报
回复
weekofmonth是一个月中的第几个星期吧

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧