Date
是日期类,表示特定的瞬间,精确到毫秒。
DateFormat
针对日期进行格式化和针对字符串进行解析的类,但是是抽象类,所以使用其子类SimpleDateFormat。
- 构造方法
- Date(); 根据当前的毫秒值创建日期对象
- Date(long date); 根据给定的毫秒值创建日期对象
- 获取
- public long
getTime()
:获取时间,从Date得到一个毫秒值,以毫秒为单位。
- public long
- 设置
- public void
setTime(long time)
:设置时间
- public void
public class DateDemo {
public static void main(String[] args) {
// 创建对象
Date d = new Date();
System.out.println("d:" + d);
// 创建对象
long time = 1000 * 60 * 60; // 1小时
Date d2 = new Date(time);
System.out.println("d2:" + d2);
// 获取时间
time = d.getTime();
System.out.println(time);
System.out.println(System.currentTimeMillis());
// 设置时间
d.setTime(1000); //1秒
System.out.println("d:" + d);
}
}
输出:
d:Tue Apr 20 01:00:58 CST 2021
d2:Thu Jan 01 09:00:00 CST 1970
1618851658156
1618851658196
d:Thu Jan 01 08:00:01 CST 1970
创建、设置 Date 类对象都是通过毫秒值进行的,而日常开发中,一般都是字符串,如:2021-04-20 01:04:05
,所以需要有 String 、Date相互转换的类:DateForamt。
DateForamt:可以进行日期和字符串的格式化和解析,但是由于是抽象类,所以使用具体子类SimpleDateFormat
。
- 构造方法
- public SimpleDateFormat(); 默认模式
- public SimpleDateFormat(String pattern); 给定的模式
模式 | 说明 |
---|---|
年 | y |
月 | M |
日 | d |
时 | H |
分 | m |
秒 | s |
转换方式:
- Date 转换 String(格式化)
- public final String
format(Date date)
- public final String
- String 转换 Date(解析)
- public final Date
parse(String s)
- public final Date
public class TestDemo {
public static void main(String[] args) throws ParseException {
// Date -- String
Date d = new Date();
// 给定模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// public final String format(Date date)
String s = sdf.format(d);
System.out.println(s);
//String -- Date
String str = "2021-04-20 12:12:12";
//在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = sdf2.parse(str);
System.out.println(dd);
}
}
输出:
2021年04月20日 12:51:19
Tue Apr 20 12:12:12 CST 2021
面试题:计算你来到世界上多长时间?
public class TestDemo {
public static void main(String[] args) throws ParseException {
// 键盘录入你的出生的年月日
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的出生年月日:");
String line = sc.nextLine();
// 把该字符串转换为一个日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse(line);
// 通过该日期得到一个毫秒值
long myTime = d.getTime();
// 获取当前时间的毫秒值
long nowTime = System.currentTimeMillis();
// 用D-C得到一个毫秒值
long time = nowTime - myTime;
// 把E的毫秒值转换为年
long day = time / 1000 / 60 / 60 / 24;
System.out.println("你来到这个世界:" + day + "天");
// 可以使用BigInterger
BigInteger divide = BigInteger.valueOf(System.currentTimeMillis())
.subtract(BigInteger.valueOf(d.getTime()))
.divide(new BigInteger("" + 1000 * 60 * 60 * 24));
System.out.println(divide);
}
}
输出:
请输入你的出生年月日:
1993-04-16
你来到这个世界:10231天
10231