import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class StringDateFormatCalendar {
public static void main(String[] args) throws ParseException {
String dateString = "2019-6-29";
DateFormat df = new SimpleDateFormat("yyyy-mm-dd");
//String to Date
Date date = df.parse(dateString);
Calendar calendar = new GregorianCalendar();
//Date to Calendar
calendar.setTime(date);
// System.out.println(calendar);
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i=0; i<calendar.get(Calendar.DAY_OF_WEEK);i++){
System.out.print("\t");
}
calendar.set(Calendar.DAY_OF_MONTH,1);
for (int i = 0; i <calendar.getActualMaximum(Calendar.DATE)-1; i++) {
if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY )
System.out.println("");
System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"\t");
calendar.add(Calendar.DATE,1);
}
}
}
后续注意到一个问题:2019年6月其实只有30天,实际打印为31天,测试date为
Tue Jan 29 00:06:00 CST 2019
发现是SimpleDateFormat的格式写错了,不应该是yyyy-mm-dd 应该是yyyy-MM-dd