package test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* y:year-of-era;正正经经的年;
* Y:week-based-year;只要本周跨年,那么这周就算入下一年;也就是 12 月
*/
public class testDate {
public static void main(String[] args) throws ParseException{
//字符串转换成日期
Date date = new Date();
SimpleDateFormat sim =new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sim2 =new SimpleDateFormat("YYYY-MM-dd");
Date parse = sim.parse("2019-12-31");
System.out.println(sim.format(parse));
System.out.println(sim2.format(parse));
//日期转换成字符串
Calendar calendar = Calendar.getInstance();
calendar.set(2019, Calendar.AUGUST, 31);
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 =new SimpleDateFormat("YYYY-MM-dd");
Date time = calendar.getTime();
System.out.println("yyyy-MM-dd: "+ sdf.format(time));
System.out.println("YYYY-MM-dd: "+ sdf2.format(time));
calendar.set(2019, Calendar.DECEMBER, 31);
time = calendar.getTime();
System.out.println("yyyy-MM-dd: "+ sdf.format(time));
System.out.println("YYYY-MM-dd: "+ sdf2.format(time));
/**
* setFirstDayOfWeek(int value) (jdk1.8)
* 设置一个星期的第一天是什么;例如,在美国 SUNDAY, MONDAY法国。
*/
calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置星期一为一周开始的第一天
calendar.setMinimalDaysInFirstWeek(4);//可以不用设置
calendar.setTimeInMillis(System.currentTimeMillis());//获得当前的时间戳
int weekYear = calendar.get(Calendar.YEAR);//获得当前的年
int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);//获得当前日期属于今年的第几周
System.out.println("第几周:"+weekOfYear);
/**
* setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)(jdk1.8)
* 设置此 Calendar日期与指定日期指定周年,周年和星期。
*/
calendar.setWeekDate(weekYear, weekOfYear, 2);//获得指定年的第几周的开始日期
long starttime = calendar.getTime().getTime();//创建日期的时间该周的第一天,
calendar.setWeekDate(weekYear, weekOfYear, 1);//获得指定年的第几周的结束日期
long endtime = calendar.getTime().getTime();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dateStart = simpleDateFormat.format(starttime);//将时间戳格式化为指定格式
String dateEnd = simpleDateFormat.format(endtime);
System.out.println(dateStart);
System.out.println(dateEnd);
}
}