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 }

思维导图:

日期符号格式:

原文地址:https://www.cnblogs.com/SUN99bk/p/10553976.html