Date类
- 概念:类 Date 表示特定的瞬间,精确到毫秒
- 构造方法
public Date()
eg: Date date = new Date();
System.out.println(date);————输出:Wed Nov 06 11:01:02 CST 2019 星期 月 日 时分秒 年
public Date(long date) ——把一个long类型的毫秒值转换成一个日期对象
eg: Date date1 = new Date(1000 * 60 * 60 * 24);
System.out.println(date1);————输出:Fri Jan 02 08:00:00 CST 1970 在计算机元年上加一天
- 成员方法
public long getTime(): 获取一个日期对象毫秒值
Date----long 的转换——————转换成毫秒值
eg: 获取从1970 0101 00:00:00到当前时间的间隔毫秒值
Date date = new Date();
long time = date.getTime();————方法一
System.out.println(time);
long time1 = System.currentTimeMillis();————方法二
System.out.println(time1);
eg: Date date1 = new Date();
long time = date1.getTime();
System.out.println(time);————得到毫秒值
Date date2 = new Date();
date2.getTime();
System.out.println(date2);————得到当前日期
public void setTime(long time): 给一个日期对象设置上指定的毫秒值
long----Date 的转换—————————转换成日期
eg: Date date = new Date();
date.setTime(1000*60*60);————————————在起始元年1970上加一小时
System.out.println(date);————输出:Thu Jan 01 09:00:00 CST 1970
SimpleDateFormat类
- 概念:格式化日期 默认格式是:19-11-2 下午1:58
- 构造方法
public SimpleDateFormat():使用默认的模式来创建一个SimpleDateFormat对象
eg: Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat();
String date1 = sdf.format(date);
System.out.println(date1);——————输出:19-11-6 上午11:50
public SimpleDateFormat(String pattern):使用指定的模式(规则比如yyyy:MM:dd HH:mm:ss)来创建一个SimpleDateFormat对象
eg: Date date = new Date();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒S毫秒 E");
- 成员方法
public String format(Date date): 把一个日期对象格式化成一个字符串
eg: Date date = new Date();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒S毫秒 E");
String date2 = sdf1.format(date);
System.out.println(date2);——————输出:2019年11月06日 11时56分24秒740毫秒 星期三
public Date parse(String dateStr): 把一个日期字符串解析成一个日期对象 注意要以指定格式解析
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class demo2 {
public static void main(String[] args) throws ParseException {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date1 = sdf.format(date);——————获取当前日期字符串
System.out.println(date1);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date2 = sdf1.parse(date1);——————字符串转化为日期格式
System.out.println(date2);
}
}
例题:算一下你在世界上存在了多少年
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws ParseException {
/*需求:算一下你来到这个世界多少天 ?
1.算出 出生那天的毫秒值
2 .取出当前毫秒值
3.两个值相减/1000/60/60/24*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的生日:格式为:2019-11-06");
String s = sc.nextLine();
Date birthday = new SimpleDateFormat("yyyy-MM-dd").parse(s); //将字符串转化为日期格式
System.out.println("出生日期:"+birthday);
long birthdayTime = birthday.getTime();// 取生日的毫秒值
System.out.println("生日的毫秒值:"+birthdayTime);
long now = System.currentTimeMillis(); // 取当前日期的毫秒值
System.out.println("现在的毫秒值:"+now);
System.out.println("你已经在世界上存在了"+((now-birthdayTime)/1000/60/60/24/365)+"年");
}
}
Calendar类
- 概念:抽象类,不能直接new对象——通过静态方法获取对象
public static Calendar getInstance()——使用默认时区和语言环境获得一个日历对象
eg: Calendar in = Calendar.getInstance();
System.out.println(in);
public int get(int field)——获得给定日历字段对应的值 field通过Calendar提供的字段来拿
eg: int year = in.get(Calendar.YEAR);
int month = in.get(Calendar.MONTH);————————月份从0开始到11
int day = in.get(Calendar.DAY_OF_MONTH);
int hour = in.get(Calendar.HOUR_OF_DAY);
int min = in.get(Calendar.MINUTE);
int second = in.get(Calendar.SECOND);————输出:年月日时分秒
- 成员方法
public void add(int field,int amount)——根据日历的规则,为给定的日历字段添加或减去指定的时间量
eg: Calendar in = Calendar.getInstance();
in.add(Calendar.MONTH,1);
System.out.println(in.get(Calendar.MONTH));——————输出:11
in.add(Calendar.DAY_OF_MONTH,-5);
System.out.println(in.get(Calendar.DAY_OF_MONTH));——————输出:1
public final void set(int year,int month,int date)——设置日历时间 年月日
eg: Calendar in = Calendar.getInstance();
in.set(2019,10,06); 设置年月日
System.out.println(in.get(Calendar.YEAR));
in.set(Calendar.YEAR,1999); 设置年(仅为某字段设置值)
System.out.println(in.get(Calendar.YEAR));————输出:2019 1999
例题:键盘输入某一年份,判断是否为闰年
import java.util.Calendar;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//键盘录入任意一个年份,获取任意一年的二月有多少天
Scanner sc = new Scanner(System.in);
System.out.println("请输入任意一个月份:");
int year = sc.nextInt();
Calendar in = Calendar.getInstance();
in.set(year,2,1);
in.add(Calendar.DAY_OF_MONTH,-1);
int m = in.get(Calendar.DAY_OF_MONTH);
if(m==28){
System.out.println(year+"是平年 二月有"+m+"天");
}else{
System.out.println(year+"是闰年 二月有"+m+"天");
}
}
}