Date类(util包下的类,不能导入sql包的)
表示特定的瞬间,精确到毫秒
构造方法
public Date( )
public Date (long date)
成员方法
getTime( )
setTime(long time)
方法演示
public class DateTime {
public static void main(String[] args) {
Date d1 = new Date(); //如果没有传参数代表的是当前时间
System.out.println(d1);
System.out.println("-----------------");
Date d2 = new Date(0); //如果构造方法中参数传为0代表的是1970年1月1日
System.out.println(d2);
System.out.println("-----------------");
Date d3 = new Date();
System.out.println(d3.getTime()); //通过时间对象获取毫秒值
System.out.println(System.currentTimeMillis()); //通过系统类的方法获取时间毫秒值
System.out.println("-----------------");
Date d4 = new Date();
d4.setTime(1000); //设置毫秒值改变时间对象
System.out.println(d4);
}
SimpleDateFormat类(实现日期和字符串的相互转换 )
是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化
构造方法
public SimpleDateFormat()
public SimpleDateFormat(String pattern)
成员方法
public final String format(Date date) 将日期对象转换为字符串
public Date parse(String source) 将时间字符串转换为日期对象
方法演示
public class SimpleDateFormatTime{
public static void main(String[] args) throws ParseException {
Date d1 = new Date(); //通过对象获取当前时间值
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //创建日期格式化类对象
System.out.println(sdf1.format(d1)); //将日期对象转换为字符串
System.out.println("-----------------");
String str = "2008年08月08日 08:08:08";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //创建日期格式化类对象
Date d2 = sdf2.parse(str); // 抛出异常
System.out.println(d2);
}
练习
描述:算一下你来到这个世界多少天?
public class SimpleDate {
public static void main(String[] args) throws ParseException {
String s1 = "1995年04月28日";
String s2 = "2019年07月27日";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); //创建日期格式化类对象
Date d1 = sdf.parse(s1);
Date d2 = sdf.parse(s2);
long Time = d2.getTime()-d1.getTime(); // 获取两个时间差的毫秒值
System.out.println(Time / 1000 / 60 / 60 /24 );
}
}
Calendar类
一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH等日历字段之间的转换
成员方法
public static Calendar getInstance()
public int get(int field)
public void add(int field, int amount)
public final void set(int year, int month, int date)
方法演示
public class Demo_Calender {
public static void main(String[] args) {
Calendar c = Calendar.getInstance(); //父类引用指向子类对象
System.out.println(c.get(Calendar.YEAR) + "年"
+ getNum((c.get(Calendar.MONTH) + 1)) + "月"
+ getNum(c.get(Calendar.DAY_OF_MONTH)) + "日"
+ " " + getWeek(c.get(Calendar.DAY_OF_WEEK)));
System.out.println("-------------------------");
c.add(Calendar.MONTH , -1); //对指定的字段进行向前减或向后加
c.set(Calendar.YEAR , 2000); //修改指定字段
System.out.println(c.get(Calendar.YEAR) + "年"
+ getNum((c.get(Calendar.MONTH) + 1)) + "月"
+ getNum(c.get(Calendar.DAY_OF_MONTH)) + "日"
+ " " + getWeek(c.get(Calendar.DAY_OF_WEEK)));
}
public static String getWeek(int num) {
String[] str = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
return str[num];
}
public static String getNum(int num) {
return num > 9 ? "" + num : "0" + num;
}
}
练习
描述:键盘任意录入一个年份,判断该年是闰年还是平年
分析
1.键盘录入年Scanner
2.创建Calendar c = Calendar.getInstance();
3.通过set方法设置为那一年的3月1日
4.将日期向前减去1
5.判断日是多少天,如果是29天返回true否则返回false
public class Year {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
switch(1) {
case 1:
System.out.println("请输入一个年份,判断该年是闰年还是平年");
int year = sc.nextInt(); //录入数字年份
show(year);
case 2:
System.out.println("请输入一个年份,判断该年是闰年还是平年");
int year2 = sc.nextInt(); //录入数字年份
show(year2);
break;
}
}
private static void show(int year) {
Calendar c = Calendar.getInstance();
c.set(year, 2, 1);
c.add(Calendar.DAY_OF_MONTH, -1);
if(c.get(Calendar.DAY_OF_MONTH) == 28) {
System.out.println("你输入的年份是平年");
}else {
System.out.println("你输入的年份是闰年");
}
}
}