一、需求
小贾下单并且付款的时间为: 2020年11月11日 00:03:47
小皮下单并且付款的时间为: 2020年11月11日 00:10:11
判断谁在秒杀时间段内?
二、分析
1.分别定义活动时间、下单时间的字符串。
2.定义时间转换模板(SimpleDateFormat)。
3.parse 把字符串转换为时间。
4.getTime() 获取当前时间到1970年1月1日的毫秒。
5.判断用户下单时间是否在活动开始时间和结束时间之间的毫秒数之间。
三、代码
package demo02_DateClass;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 秒杀案例
*/
public class demo_killCase {
public static void main(String[] args) throws ParseException {
//定义模板
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
/**
* 活动时间
*/
String start_date="2020年11月11日 00:00:00";
String end_date="2020年11月11日 00:10:00";
/**
* 下单时间
*/
String user1_date = "2020年11月11日 00:03:47";
String user2_date = "2020年11月11日 00:10:11";
/**
* 活动时间字符串转时间
*/
Date date_start = sdf.parse(start_date);
Date date_end = sdf.parse(end_date);
/**
* 下单时间字符串转时间
*/
Date date_user1 = sdf.parse(user1_date);
Date date_user2 = sdf.parse(user2_date);
/**
* 活动时间毫秒
*/
long startTimeMs = date_start.getTime();
long endTimeMs = date_end.getTime();
//判断是否参加上秒杀
if(date_user1.getTime()>=startTimeMs&&date_user1.getTime()<=endTimeMs){
System.out.println("小贾成功参与秒杀!");
}else{
System.out.println("小贾错过秒杀!");
}
if(date_user2.getTime()>=startTimeMs&&date_user2.getTime()<=endTimeMs){
System.out.println("小皮成功参与秒杀!");
}else{
System.out.println("小皮错过秒杀!");
}
}
}
四、总结
1.java.util.Date 代表了一个特定的时间,精确到毫秒
2.getTime() 返回当前时间的毫秒值。(在1970年1月1日 00:00:00基础上增加设置的毫秒值)
3.java.text.SimpleDateFormat类可以实现日期格式化(日期–>文本)和解析(文本–>日期)。
public SimpleDateFormat() 构造一个SimpleDateFomat,使用默认格式。(yy-MM-dd a hh:mm)
public SimpleDateFormat(String patttern) 构造一个SimpleDateFormat,使用指定格式。
4.SimpleDateFormat格式化和解析日期
日期格式化(从Date到String)
public final String format(Date date):将日期格式化成特定格式的字符串。
SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
String format = sdf.format(new Date());
解析(从String到Date)
public Date parse (String source):将字符串解析成日期对象。
String s = "2020-10-10";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(s);