Calendar之商品促销活动

Calendar之商品促销活动日期

直接看题目:

计算商品促销日期:
商场需要在一件商品过期的前两周的周五开始做促销
计算商品过期日期往前推两周的周五的日期

public class ShangPinCuXiao {
	public static void main(String[] args) {
		//定义一个键盘扫描器
		Scanner in = new Scanner(System.in);
		//提示用户输入的时间及格式
		System.out.println("请输入商品的过期时间:(格式:2020-05-20)");
		//使用str变量来接收用户输入的时间
		String str = in.nextLine();
		//格式化时间
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date = null;
		try {
			//调用SimpleDateFormat的parse方法,转换成date类型
			date = sdf.parse(str);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		//创建格林威治时间对象
		Calendar cal = Calendar.getInstance();
		//将用户输入的时间传入格林威治中
		cal.setTime(date);
		//两周也就是14天
		cal.add(Calendar.DAY_OF_YEAR, -14);
		//设置本周的周五
		cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
		//将格林威治时间转换成date类型
		date = cal.getTime();
		//进行格式化成String类型
		String after = sdf.format(date);
		//最终输出时间
		System.out.println("商品要开始促销的时间是:"+after);
	}
}

这里面使用到的知识点有:

键盘扫描器(不做介绍)

格式化时间:SimpleDateFormat

y:年 yyyy:四位年显示

M:月 MM:两位月显示

d:日 dd:两位日显示

a:上午and下午显示

E:星期

H:时 HH:两位时显示

m:分 mm:两位分显示

s:秒 ss:两位秒显示

字符串转Date:
String str = "2020-05-20 13:14:52";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//因为Date有一个ParseException异常,可以throws抛出去,也可以try{}catch(){},这里推荐try{}catch(){}
Date date = null;
try{
    //sdf.parse();该方法是字符串转date类型得方法
    date = sdf.parse(str);
    System.out.println(date);
}catch(ParseException e){
    e.printStackTrace();
}
Date转字符串:
//首先获取一个当前Date类型时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//sdf.format();该方法是将Date类型时间转换为String类型
String str = sdf.format(date);
System.out.println(str);
时间类:Date:
//Date类型的创建,获取的是当前时间
Date date = new Date();
//输出当前时间
System.out.println(date);//Fri May 29 23:27:04 CST 2020

因为Date类型获取时间的方式存在千年虫的问题,也就是需要在需要在获取的年份+1900

在早期的计算机程序中规定的年份用两位数表示,也就是说,假如是1971年,在计算机里就会被表示为71,但是到了2000年的时候这个情况就出现了问题,
计算机就会将其年份表示为00。这样的话计算机内部对年份的计算就会出现问题。这个事情当时被称为千年虫

并且Date的很多方法都是过时的了,比如说:

在这里插入图片描述
所以我们不用Date来获取时间,但是我们用Date类型来创建时间

格林威治时间:Calendar

Calendar类是java.util包中提供的抽象类,从jdk1.1开始出现了,是Date类的替代方案,Calendar类中包含了对不同国家地区日历的处理
Calendar常见的子类:java.util.GregorianCalendar;(既然是抽象类,我们需要通过子类来创建对象)

使用Calendar创建对象的两种方法:

(1) Calendar是抽象类,可以通过子类GregorianCalendar去创建对象:
Calendar cal=new GregorianCalendar();

(2)使用静态工厂方法获取对象
Calendar cal=Calendar.getInstance();

Calendar的设置修改日期的方法:

get():获取日历字段的值

set();设置日历字段的值

add();会自动进行调整

roll();添加时间量,只会在指定的字段进行调整

//创建Calendar对象
Calendar cal = Calendar.getInstance();
//输出时间
System.out.println(cal);
//获取现在时间
Date date = cal.getTime();
System.out.println(date);//输出当前时间
//获取年份,此种方式没有千年虫问题
System.out.println("年份为:"+cal.get(Calendar.YEAR));
//获取月份 月份从0开始
System.out.println("月份为:"+(cal.get(Calendar.MONTH)+1));
//获取一个月的某一天
System.out.println("日期为:"+cal.get(Calendar.DATE));

Calendar类中的方法较多,这里随便拿几个做例子,大家可以去查看api文档仔细看里面的方法进行使用

谢谢大家观看,咱们下期再见~~~~

猜你喜欢

转载自blog.csdn.net/qq_45280147/article/details/106435068
今日推荐