Java中日期格式(String、Date、Calendar)的相互轉換


 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 }

 

思維導圖:

 

 

日期符號格式:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM