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 }
如果想要直接獲取系統時間的話,這里提供一種較常用的實現方法:
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 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 }
思維導圖:
日期符號格式: