1 packageday20190318;2
3 importjava.text.ParseException;4 importjava.text.SimpleDateFormat;5 importjava.util.Calendar;6 importjava.util.Date;7 importjava.util.Scanner;8 /**
9 * 计算商品保质期并计算优惠时间10 *@authorAdministrator11 *12 */
13 public classProCalendarDemo {14
15 public static void main(String[] args) throwsParseException {16 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");17 Scanner input=newScanner(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,intexp){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 returnproCal.getTime();35 }36 }
1 packageday20190318;2
3 importjava.util.Calendar;4 /**
5 * 日期处理6 *@authorAdministrator7 *8 */
9 public classCalendarDemo {10
11 public static voidmain(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 packageday20190318;2
3 importjava.text.ParseException;4 importjava.text.SimpleDateFormat;5 importjava.util.Date;6 /**
7 * 日期字符串格式化,字符串转换为日期8 *@authorAdministrator9 *10 */
11 public classSdfDateDemo {12
13 public static void main(String[] args) throwsParseException {14 Date now=newDate();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 }
如果想要直接获取系统时间的话,这里提供一种较常用的实现方法:
import java.util.Date;
import java.text.SimpleDateFormat;
public class NowString {
public static void main(String[] args) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
}
}
另附上一道思考题:
根据员工入职时间和合同期计算下一次签订合同时间。
a.入职日期为指定格式字符串。yyyy-MM-dd
b.合同期单位为月
c.签订合同日期为到期前前一个月份的工作日(遇到周六、日顺延到下周一)
d.返回制定格式的字符串。 yyyy/MM/dd。
思
考
时
间
下面是我的想法:
1 packageday20190318;2
3 importjava.text.ParseException;4 importjava.text.SimpleDateFormat;5 importjava.util.Calendar;6 importjava.util.Date;7 importjava.util.Scanner;8
9 public classStaffContract {10
11 public static void main(String[] args) throwsParseException {12 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");13 Scanner input=newScanner(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,intmonth){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 returnstartCal.getTime();30 }else if(startCal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){31 startCal.add(Calendar.DAY_OF_WEEK, +1);32 returnstartCal.getTime();33 }else
34 returnstartCal.getTime();35 }36 }
思维导图:
日期符号格式: