zoukankan      html  css  js  c++  java
  • 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 }

    思维导图:

    日期符号格式:

  • 相关阅读:
    Java——Java重写和重载
    Java——继承
    Java——Java异常(不完整)
    Java——Stream、File、IO
    前端规范整理
    网站前端优化 -saveForSelf
    PhoneGap与WAP站静态化
    js执行顺序
    前端优化-内容优化-郑钧
    HTTP协议-标签简介
  • 原文地址:https://www.cnblogs.com/SUN99bk/p/10553976.html
Copyright © 2011-2022 走看看