<pre name="code" class="java">import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// 输出本年中一共有多少周
int weeksInWeekYear = calendar.getWeeksInWeekYear();
System.out.println(weeksInWeekYear);
// 输出年份
int weekYear = calendar.getWeekYear();
System.out.println(weekYear);
// 本周是该月的第几周
int n = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
System.out.println("**** "+n);
Date date = new Date(System.currentTimeMillis());
System.out.println(date);
// 通过SimpleDateFormat的format方法,可以将Date对象类型转变成字符串类型
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String str = format.format(date);
System.out.println(str);
System.out.println(dayForWeek("2016-01-01"));
int m = 1;
while(m < 13){
int month = m;
calendar.clear();
calendar.set(Calendar.YEAR, weekYear);
// 1月从0开始
calendar.set(Calendar.MONTH, month - 1);
//设置为1号,当前日期既为本月第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
// 将calendar对象初始化为month的第一天
System.out.println("##### "+format.format(calendar.getTime()));
// 获取每个月份的天数
int count = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("@@@ "+count);
// 输出每个月份的每天日期,由于上面每个月一号已经输出来,所以只需要输出剩余的count-1天
for(int j=0;j<=(count - 2);){
calendar.add(Calendar.DAY_OF_MONTH, +1);
j++;
// System.out.println(format.format(calendar.getTime()));
// 如果是星期三就输出来
if(dayForWeek(format.format(calendar.getTime())) == 3){
System.out.println(format.format(calendar.getTime()));
}
}
m++;
}
}
public static int dayForWeek(String pTime){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
try {
// 通过SimpleDateFormat的parse方法可以将字符串日期转变成Date类型对象
calendar.setTime(format.parse(pTime));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int dayForWeek = 0;
/**
* 必须要减一,因为数组下标从0开始,而她返回的是数组的内容,是数组{1,2,3,4,5,6,7}
* 中用1~7来表示:星期天,星期一,星期二,星期三,星期四,星期五,星期六 。
* 如果当天是星期一她会返回2,所以减一,才等于1,才是你想要的,如果是星期天就返回1-1=0咯!
*/
if(calendar.get(Calendar.DAY_OF_WEEK) == 1){
dayForWeek = 7;
}else{
dayForWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
}
return dayForWeek;
}
}
Calendar中一些比较常用的函数的使用
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Exp {
public static void main(String[] args) {
Date date2 = null;
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String string = format.format(date);
System.out.println("current date:"+string);
try {
date2 = format.parse(string);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
calendar.setTime(date2);
// 使用add当修改的字段超出它允许的最大范围时,会发生进位,即上一级的字段会增大
calendar.add(Calendar.MONTH, 11);
String str = format.format(calendar.getTime());
System.out.println("add method. after 11 month date:"+str);
calendar.setTime(date2);
// 使用roll修改的字段超出它允许的最大范围时,不会发生进位
calendar.roll(Calendar.MONTH,11);
String string2 = format.format(calendar.getTime());
System.out.println("roll method. after 11 month date:"+string2);
calendar.clear();
// Calendar.MONTH的起始值是0,代表1月份,所以下面的表示是2016-1-31
calendar.set(2016, 0, 31);
// 一月增加一个月就是2月份,由于2月份没有31号,就自动变为该月最后一天29号
calendar.add(Calendar.MONTH, 1);
String string3 = format.format(calendar.getTime());
System.out.println(string3);
}
}