工具类Date、Calendar及其格式化SimpleDateFormate
Calendar类:
public class DemoCalendar {
public static void main(String[] args) {
// 1.计算某一月份的最大天数
Calendar time = Calendar.getInstance();
time.clear();
int year=2020;
int i=12;
time.set(Calendar.YEAR, year); // year 为 int
time.set(Calendar.MONTH, i - 1);// 注意,Calendar对象默认一月为0
int day = time.getActualMaximum(Calendar.DAY_OF_MONTH);// 本月份的天数
// 注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
// 2.Calendar和Date的转化
// (1) Calendar转化为Date Calendar
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
// (2) Date转化为Calendar
Date date1 = new Date();
Calendar cal1 = Calendar.getInstance();
cal.setTime(date);
// 3.格式化输出日期时间(这个用的比较多)
Date date2 = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time2 = df.format(date);
System.out.println(time);
// 4.计算一年中的第几星期
// (1)计算某一天是一年中的第几星期
Calendar cal3 = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
int weekno = cal.get(Calendar.WEEK_OF_YEAR);
// (2)计算一年中的第几星期是几号
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal2 = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(df1.format(cal.getTime()));//输出:2006-01-02
// 5.add()和roll()的用法(不太常用)
// (1)add()方法
SimpleDateFormat df3=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal4 = Calendar.getInstance();
cal4.set(Calendar.YEAR, 2006);
cal4.set(Calendar.MONTH, 8);
cal4.set(Calendar.DAY_OF_MONTH, 3);
cal4.add(Calendar.DATE, -4);
Date date3 = cal4.getTime();
System.out.println(df3.format(date));
cal4.add(Calendar.DATE, 4);
date = cal4.getTime();
System.out.println(df.format(date));//输出:2006-08-30 2006-09-03
//(2)roll方法
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH,8);
cal.set(Calendar.DAY_OF_MONTH,3);
cal.roll(Calendar.DATE, -4);
date=cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE,4);
date=cal.getTime();
System.out.println(df.format(date));//输出:2006-09-292006-09-03
// 可见,roll()方法在本月内循环,一般使用add()方法;
}
}
Date类:
public class Demo01 {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());//到时间原点经历了多少毫秒
date();
date2();
}
public static void date() {
Date time = new Date();
System.out.println(time);//Sat Sep 26 16:12:13 CST 2020
//成员方法
long a=time.getTime();//到时间原点经历了多少毫秒
System.out.println(a);
}
public static void date2() {
Date time2=new Date(13134651122144l);//Sat Mar 22 18:12:02 CST 2386
System.out.println(time2);
}
}
SimpleDateFormate:
public static void main(String[] args) {
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");
SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()
SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
SimpleDateFormat myFmt4=new SimpleDateFormat(
"一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
Date now=new Date();
System.out.println(myFmt.format(now));
System.out.println(myFmt1.format(now));
System.out.println(myFmt2.format(now));
System.out.println(myFmt3.format(now));
System.out.println(myFmt4.format(now));
System.out.println(now.toGMTString());
System.out.println(now.toLocaleString());
System.out.println(now.toString());
}
}
综合运用:
public class TestCalendar {
public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
public static void main(String[] args) {
Calendar now = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。
System.out.println("当前时间" + sdf.format(now.getTime()));
now.add(Calendar.HOUR, 1);//当前时间2小时后的时间
Date time1 = now.getTime();
System.out.println("1小时后" + sdf.format(time1));
Calendar now2 = Calendar.getInstance();
now2.add(Calendar.DAY_OF_WEEK, 1);
System.out.println("1天后" + sdf.format(now2.getTime()));
Calendar now6 = Calendar.getInstance();
now6.add(Calendar.DAY_OF_WEEK_IN_MONTH, 1);
System.out.println("1星期后" + sdf.format(now6.getTime()));
Calendar now3 = Calendar.getInstance();
now3.add(Calendar.MONTH, 1);
System.out.println("1月后" + sdf.format(now3.getTime()));
//比较时间大小:1大于; 0等于; -1小于
int boo = now3.compareTo(now2);
System.out.println(boo);
//获取当前时间的毫秒显示
long timeInMillis = Calendar.getInstance().getTimeInMillis();
System.out.println("当前时间的毫秒" + timeInMillis);
//将毫秒转换为日期
Calendar now4 = Calendar.getInstance();
now4.setTimeInMillis(timeInMillis + 24 * 60 * 60 * 1000);
System.out.println("毫秒转换为日期" + sdf.format(now4.getTime()));
//日期转换为毫秒
Calendar now5 = Calendar.getInstance();
now5.setTime(now4.getTime());
System.out.println("日期转换为毫秒" + now5.getTimeInMillis());
//获取昨天的日期yyyy-MM-dd,逻辑:处理时间毫秒
Calendar now7 = Calendar.getInstance();
now7.setTimeInMillis(now7.getTimeInMillis() - 24 * 60 * 60 * 1000);
System.out.println("前一天的日期" + sdf1.format(now7.getTime()));
now7.setTimeInMillis(now7.getTimeInMillis() + 24 * 60 * 60 * 1000 * 2);
System.out.println("后一天的日期" + sdf1.format(now7.getTime()));
}
}