1 package day20190318; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7 import java.util.Scanner; 8 /** 9 * 计算商品保质期并计算优惠时间 10 * @author Administrator 11 * 12 */ 13 public class ProCalendarDemo { 14 15 public static void main(String[] args) throws ParseException { 16 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 17 Scanner input=new Scanner(System.in); 18 System.out.print("请输入商品的生产日期:"); 19 String proc=input.next(); 20 System.out.print("请输入商品的保质期(月):"); 21 int exp=input.nextInt(); 22 Date sellDate=specialDay(sdf.parse(proc),exp); 23 System.out.println("商品的促销日期为:"+sdf.format(sellDate)); 24 } 25 public static Date specialDay(Date proc,int exp){ 26 Calendar proCal=Calendar.getInstance();//创建Calendar对象 27 proCal.setTime(proc);//将时间设置为商品的生产日期 28 //计算出商品的保质期 29 proCal.add(Calendar.MONTH,exp); 30 //将时间提前两个星期 31 proCal.add(Calendar.WEEK_OF_MONTH, -2); 32 //将促销的时间设置到本周星期五 33 proCal.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY); 34 return proCal.getTime(); 35 } 36 }
1 package day20190318; 2 3 import java.util.Calendar; 4 /** 5 * 日期处理 6 * @author Administrator 7 * 8 */ 9 public class CalendarDemo { 10 11 public static void main(String[] args) { 12 //创建Calendar对象 13 Calendar now=Calendar.getInstance(); 14 now.set(Calendar.MONTH,4); 15 //获取月份 16 int m=now.get(Calendar.MONTH); 17 System.out.println(m); 18 //Calendar计算 19 now.add(Calendar.MONTH,3);//增加月份数 20 int n=now.get(Calendar.MONTH); 21 System.out.println(n); 22 System.out.println(now.getTime()); 23 } 24 25 }
1 package day20190318; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6 /** 7 * 日期字符串格式化,字符串转换为日期 8 * @author Administrator 9 * 10 */ 11 public class SdfDateDemo { 12 13 public static void main(String[] args) throws ParseException { 14 Date now=new Date(); 15 //创建日期格式化对象 16 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 17 String dateInfo=sdf.format(now); 18 System.out.println(dateInfo); 19 //将日期的字符串转换为date 20 SimpleDateFormat adf=new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); 21 Date date=adf.parse("2018/05/04 10:30:12"); 22 System.out.println(date); 23 } 24 25 }
附上一道作业题:
根据员工入职时间和合同期计算下一次签订合同时间。
a.入职日期为指定格式字符串。yyyy-MM-dd
b.合同期单位为月
c.签订合同日期为到期前前一个月份的工作日(遇到周六、日顺延到下周一)
d.返回制定格式的字符串。 yyyy/MM/dd。
1 package day20190318; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7 import java.util.Scanner; 8 9 public class StaffContract { 10 11 public static void main(String[] args) throws ParseException { 12 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 13 Scanner input=new Scanner(System.in); 14 System.out.print("请输入签订合同时间:"); 15 String startCal=input.next(); 16 System.out.print("请输入合同期(月):"); 17 int month=input.nextInt(); 18 Date sellDate=SpecialDay(sdf.parse(startCal),month); 19 System.out.println("续签合同日期为:"+sdf.format(sellDate)); 20 } 21 public static Date SpecialDay(Date start,int month){ 22 //调用工厂方法 23 Calendar startCal=Calendar.getInstance(); 24 startCal.setTime(start); 25 startCal.add(Calendar.MONTH,month); 26 startCal.add(Calendar.MONTH,-1); 27 if(startCal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){ 28 startCal.add(Calendar.DAY_OF_WEEK,+2); 29 return startCal.getTime(); 30 }else if(startCal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){ 31 startCal.add(Calendar.DAY_OF_WEEK, +1); 32 return startCal.getTime(); 33 }else 34 return startCal.getTime(); 35 } 36 }
转换流程图: