Date类
Date类概述(util包下的)
类Date表示特定的瞬间,精确到秒
构造方法
public Date()
public Date(long time)
import java.util.Date;
public class test {
public static void main(String[] args) {
Date d1=new Date(); //如果没有传参数代表当前时间
System.out.println(d1);
Date d2=new Date(0); //如果构造方法中参数传为0代表的是1970年1月1日
System.out.println(d2);
}
}
输出:
Mon Sep 11 20:36:54 CST 2017
Thu Jan 01 08:00:00 CST 1970
成员方法
public long getTime()
public void setTime(long time)
import java.util.Date;
public class test {
public static void main(String[] args) {
Date d1=new Date(); //如果没有传参数代表当前时间
System.out.println(d1.getTime()); //通过时间对象获取毫秒值
System.out.println(System.currentTimeMillis()); //获取当前毫秒值
}
}
输出:
1505133692683
1505133692683
import java.util.Date;
public class test {
public static void main(String[] args) {
Date d1=new Date(); //如果没有传参数代表当前时间
d1.setTime(1000); //设置毫秒值改变时间对象
System.out.println(d1);
}
}
输出:
Thu Jan 01 08:00:01 CST 1970
SimpleDateFormat类
SimpleDateFormat类概述
DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDateFormat。
SimpleDateFormat构造方法
public SimpleDateFormat()
public SimpleDateFormat(String pattern)
SimpleDateFormat 成员方法
public final String format(Date date)
public Date parse(String source)
import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
public static void main(String[] args) {
Date d=new Date(); //如果没有传参数代表当前时间
SimpleDateFormat sdf=new SimpleDateFormat(); //创建时间格式化对象
System.out.println(sdf.format(d));
}
}
输出:
17-9-11 下午9:03
import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
public static void main(String[] args) {
Date d=new Date(); //如果没有传参数代表当前时间
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); //创建时间格式化对象
System.out.println(sdf.format(d));
}
}
输出:
2017/09/11 21:05:58
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
public static void main(String[] args) {
//Date d=new Date();
String str="1993-06-08 12:35:06";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try{
Date d= sdf.parse(str); //将时间对象转换为日期对象
System.out.println(d);
}
catch(ParseException e){
e.printStackTrace();
}
}
}
输出:
Tue Jun 08 12:35:06 CST 1993
算一算你来到这个世界多少天
需求:算一算你来到这个世界多少天?
分析:
1.将生日字符串和今天字符串存在String类型的变量中
2.定义日期格式化对象
3.将日期字符串转换为日期对象
4.通过日期对象获取时间毫秒值
5.将两个时间相减除以1000,再除以60.再除以60,再除以24得到天
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
public static void main(String[] args) {
//1.将生日字符串和今天字符串存在String类型的变量中
String birthday="1993-06-08";
String today="2017-09-12";
//2.定义日期格式化对象
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try{
//3.将日期字符串转换为日期对象
Date db= sdf.parse(birthday); //将时间对象转换为日期对象
Date dt=sdf.parse(today);
//4.通过日期对象获取时间毫秒值
long time=dt.getTime()-db.getTime();
//5.将两个时间相减除以1000,再除以60.再除以60,再除以24得到天
System.out.println(time/1000/60/60/24);
}
catch(ParseException e){
e.printStackTrace();
}
}
}
输出:
8862
Calendar类
Calendar类概述
Calendar类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获取下星期的日期)提供了一些方法。
成员方法
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)
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class test {
public static void main(String[] args) {
Calendar c=Calendar.getInstance(); //父类引用指向子类对象
System.out.println(c.get(Calendar.YEAR)); //通过字段获取年份
System.out.println(c.get(Calendar.MONTH)); //通过字段获取月,但是月是从0开始编号的
System.out.println(c.get(Calendar.DAY_OF_MONTH)); //月中第几天
System.out.println(c.get(Calendar.DAY_OF_WEEK)); //周中第几天,周日是第一天,周六是最后一天
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日 "+getWeek(c.get(Calendar.DAY_OF_WEEK)));
}
public static String getWeek(int week){
String[] arr={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return arr[week];
}
}
输出:
2017
8
12
3
2017年9月12日 星期二
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class test {
public static void main(String[] args) {
Calendar c=Calendar.getInstance(); //父类引用指向子类对象
c.add(Calendar.DAY_OF_MONTH, -1); //对指定的字段进行向前减或者向后加
c.set(c.YEAR, 1993); //修改指定字段
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日 "+getWeek(c.get(Calendar.DAY_OF_WEEK)));
c.set(1993, 5, 8);
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日 "+getWeek(c.get(Calendar.DAY_OF_WEEK)));
}
public static String getWeek(int week){
String[] arr={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return arr[week];
}
}
输出:
1993年9月11日 星期六
1993年6月8日 星期二
案例演示
需求:键盘录入任意一个年份,判断该年是闰年还是平年
分析:
1.键盘录入年份 Scanner
2.创建Calendar c=Calendar.getInstance()
3.通过set方法设置为那一年的3月1号
4.将日向前减去1
5.判断该日是多少天,如果是29天则输出闰年否则输出平年
import java.util.Calendar;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
String str;
//1.键盘录入年份 Scanner
Scanner sc=new Scanner(System.in);
System.out.println("请输入年份:");
int year=sc.nextInt();
//2.创建Calendar c=Calendar.getInstance()
Calendar c=Calendar.getInstance(); //父类引用指向子类对象
//3.通过set方法设置为那一年的3月1号
c.set(year, 2, 1);
//4.将日向前减去1
c.set(c.DAY_OF_MONTH, -1);
//5.判断该日是多少天,如果是29天这输出闰年否则输出平年
if(c.get(Calendar.DAY_OF_MONTH)==29)
str="闰年";
else
str="平年";
System.out.println(year+"年是"+str);
}
}
输出:
请输入年份:
1993
1993年是平年