在我们日常生活中时,有事需要将时间的格式进行改变
通俗来说:
format: 按指定的目标格式把Date对象转换为String parse: 按指定的源格式把String转换为Date对象
例如:将2002-11-11改成2002年11月11日来显示
此时用到SimpleDateFormat类,可以将其看作一个工具,这个工具可以将类似于2002-11-11类型的字符串解析,在解析时先创建SimpleDateFormat对象,格式与时间字符串一致,之后将str字符串传入SimpleDateFormat的parse方法,结果会将此字符串用Date类型传出。如下:
String str = "2000-11-11";
//解析str对象,格式需要与str一致
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
Date date = simpleDateFormat1.parse(str);
此时再将Date类型的date对象格式化用SimpleDateFormat类的format方法,此时再创建一个SimpleDateFormat类型的对象用于格式化想要的对象格式:例如2002年11月11日,最后用String类型的对象来接受,代码如下:
//格式化date
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy年MM月dd日");
String date2 = simpleDateFormat2.format(date);
System.out.println(date2);
下列为一个秒杀活动的例子,如果ordertime也就是下单时间在starttime(开始时间)和endtime(结束时间)之中的话,打印商品秒杀成功,否则就是商品秒杀失败。而为了实现这个思路,则需要将具体时间取出,也就是调用Date里的getime方法。代码如下:
package com.itazhang.demo6;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test2 {
public static void main(String[] args) throws ParseException {
String starTime = "2023年11月11日 0:0:0";
String endTime = "2023年11月11日 0:10:0";
String orderTime = "2023年11月11日 0:11:0";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date star = sdf.parse(starTime);
Date end = sdf.parse(endTime);
Date order = sdf.parse(orderTime);
long starttime = star.getTime();
long endtime = end.getTime();
long ordertime = order.getTime();
if(ordertime >= starttime && ordertime<=endtime){
System.out.println("秒杀活动成功");
}else
{
System.out.println("秒杀活动失败");
}
}
}