importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjava.util.Locale;importjava.util.TimeZone;public classMain {public static voidmain(String[] args) {
Calendar calendar=Calendar.getInstance(TimeZone.getDefault());//FAQ ://1.不同地区国家时间格式显示和同步问题? UTC,格林威治?夏威夷?国际化 ~ locale//2.本地client和服务器时间同步问题,比如定时下发执行任务,本地预定时早于服务器当前时间,则无法执行
System.out.println("\nTimezone: " +TimeZone.getDefault());long time =calendar.getTimeInMillis();
Date date1=calendar.getTime();
Date date2= new Date(); //get current date//method1: direct format fun call//a ~ AM/PM, 上午/下午
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); //HH ~ 24小时制
System.out.printf("\nTime1 in 24h : " +sdf1.format(calendar.getTime()));
SimpleDateFormat sdf11= new SimpleDateFormat("yyyy-MM-dd hh:mm"); //hh ~ 12小时制
System.out.printf("\nTime11 in 12h : " +sdf11.format(calendar.getTime()));
SimpleDateFormat sdf2= new SimpleDateFormat("yyyy-MM-dd a HH:mm", Locale.ENGLISH);
System.out.printf("\nTime2: " +sdf2.format(calendar.getTime()));
SimpleDateFormat sdf3= new SimpleDateFormat("yyyy年MM月dd日HH:mm");
System.out.printf("\nTime3: " +sdf3.format(calendar.getTime()));
SimpleDateFormat sdf4= new SimpleDateFormat("yyyy年MM月dd日 a HH:mm");
System.out.printf("\nTime4: " +sdf4.format(calendar.getTime()));//method2: use self define format func
int year =calendar.get(Calendar.YEAR);int month =calendar.get(Calendar.MONTH);int day =calendar.get(Calendar.DAY_OF_MONTH);int hour =calendar.get(Calendar.HOUR_OF_DAY);int minute =calendar.get(Calendar.MINUTE);int second =calendar.get(Calendar.SECOND);//欧美国家一周的第一天是星期天,这在java api代码中是写死的,因此这里要自己手动做下判断//Calendar中的星期一、二、三、四、五、六、日、DAY_OF_WEEK等都是以一个常量的形式存在的,//我们设置setFirstDayOfWeek()并不能改变这些常量的值
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); //获取当天是星期几
boolean isFirstSunday = (calendar.getFirstDayOfWeek() ==Calendar.SUNDAY);if(isFirstSunday) {
dayOfWeek-= 1;if (dayOfWeek == 0) {
dayOfWeek= 7;
}
}int dayOfWeekInMonth = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH); //某月中第几周. 按这个月1号算,1号起就是第1周,8号起就是第2周
int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH); //该月的第几周
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); //一年的第几天,从1号算起
System.out.println("\n" +getFormattedTime(year, month, day, hour, minute));
System.out.println("\ndayOfWeek: " + dayOfWeek + "\ndayOfWeekInMonth: " +dayOfWeekInMonth+ "\ndayOfYear: " +dayOfYear);
}/*** 格式化日期字符串,形如 xx年xx月xx日xx:xx:xx
*@paramyear
*@parammonth
*@paramday
*@paramhour
*@paramminute
*@returnString*/
public static String getFormattedTime(int year, int month, int day, int hour, intminute) {
String yearStr= "";
String monthStr= "";
String dayStr= "";
String hourStr= "";
String minuteStr= "";//year
if (year < 10) {
yearStr= "0" +year;
}else{
yearStr=String.valueOf(year);
}//month
if (month < 10) {
monthStr= "0" +month;
}else{
monthStr=Integer.toString(month);
}//day
if (day < 10) {
dayStr= "0" +day;
}else{
dayStr=Integer.toString(day);
}//hour
if (hour < 10) {
hourStr= "0" +hour;
}else{
hourStr=Integer.toString(hour);
}//minute
if (minute < 10) {
minuteStr= "0" +minute;
}else{
minuteStr=Integer.toString(minute);
}return yearStr + "年" + monthStr + "月" + dayStr + "日" + hourStr + ":" +minuteStr;
}
}