一:概述
在实际开发中,Date类和SimpleDateFormat类是两个常用的时间类。在这里主要具体说一下Date时间类和SimpoleDateFormat类。
二:具体说明
<1>JDK文档中的介绍
《1》Date类
《2》SimpleDateFormat类
<2>具体代码案例
/*
构造方法:
Date():分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒
Date(long date):分配 Date对象并初始化它以表示自标准基准时间以来的指定毫秒数,即1970年1月1日00:00:00
*/
// Date() 分配 Date对象并对其进行初始化,使其表示分配时间,测量Date到毫秒
Date d1 = new Date();
System.out.println(d1);
// Date(long date) 分配 Date对象并初始化它以表示自标准基准时间以来的指定毫秒数,即1970年1月1日00:00:00
Date d2 = new Date(1000 * 60 * 60 * 60);
System.out.println(d2);
/*
构造方法
SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式
SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式
格式化(从 Date 到 String )
String format(Date date):将日期格式化成日期/时间字符串
解析(从 String 到 Date )
Date parse(String source):从给定字符串的开始解析文本以生成日期
*/
// 格式化从date---->String
// 1.获取目前的时间对象
Date now = new Date();
// SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式
SimpleDateFormat sdf1 = new SimpleDateFormat();
// 格式化 String format(Date date):将日期格式化成日期/时间字符串
String s1 = sdf1.format(now);
System.out.println(s1);
// SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:MM:ss");
String s2 = sdf2.format(now);
System.out.println(s2);
System.out.println("==============================");
// 解析:从String---->Date
// Date parse(String source):从给定字符串的开始解析文本以生成日期
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:MM:ss");
String s3 = "2024-5-1 12:00:00";
Date futureTime = sdf3.parse(s3);
System.out.println(futureTime);
}
}
<3>应用案例1:键盘录入女朋友生日案例
/*
假设,现在需要做一个系统,通过键盘录入女朋友的生日时间,字符串例如:1989-12-13
在这里假设输入的都是符合格式的字符串,异常字符串不考虑在内
并将其转换为:1989年12月13日
创建一个Date对象表示2000年11月11日
创建一个SimpleDateFormat对象,并定义格式为年月日把时间变成:2000年11月11日
*/
// 1.创建键盘录入对象
Scanner sc = new Scanner(System.in);
// 2.用户键盘录入女朋友的生日
System.out.println("请输入您女朋友的生日,格式为:1989-12-13");
String birthdayString = sc.next();
// 3.创建SimpleDateFormat对象,并将其解析格式设为:yyyy年MM月dd日
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
// 利用解析方法将录入的生日字符串转换为时间
Date birthdayTime = sdf1.parse(birthdayString);
// 再次创建SimpleDateFormat对象,进行格式化
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日");
String birthday = sdf2.format(birthdayTime);
// 打印格式化后的生日
System.out.println(birthday);
}
<4>秒杀活动案例
public static void main(String[] args) {
秒杀活动开始时间:2023年11月12日 0:0:0(毫秒值)
秒杀活动结束时间:2023年11月12日 0:10:0(毫秒值)
下单并付款的时间为:2023年11月12日 0:01:0
//1.定义字符串表示三个时间
String startstr = "2023年11月12日 0:0:0";
String endstr = "2023年11月12日 0:10:0";
String orderstr = "2023年11月12日 0:01:00";
//2.解析上面的三个时间,得到Date对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
Date startDate = sdf.parse(startstr);
Date endDate = sdf.parse(endstr);
Date orderDate = sdf.parse(orderstr);
//3.得到三个时间的毫秒值
long startTime = startDate.getTime();
long endTime = endDate.getTime();
long orderTime = orderDate.getTime();
//4.判断
if (orderTime >= startTime && orderTime <= endTime) {
System.out.println("参加秒杀活动成功");
} else {
System.out.println("参加秒杀活动失败");
}
}