1. 程式人生 > >利用DateFormat、Date、Calendar等類 對含有時間的字串進行提取和計算

利用DateFormat、Date、Calendar等類 對含有時間的字串進行提取和計算

在時間提取方面我用了三種方法,最開始使用的是正則表示式,很簡潔,

之後使用的是Date類中的方法,但這種方法都已過時,

最後使用的是Calendar類的方法。、

我推薦使用正則表示式,簡潔實用;

package cn.hanfeng.example13_6;



import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Example2 {

       public static  void main(String args[]) throws ParseException{

           //Date類中的方法

      String time2="2016-04-07 16:35:36";
       SimpleDateFormat matter2= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
       Date tr2=matter2.parse(time2);
      Calendar calendar2 = Calendar.getInstance();
      calendar2.setTime(tr2);
         System.out.println("年:"+calendar2.get(Calendar.YEAR));
         int month=calendar2.get(Calendar.MONTH)+1;
         System.out.println("月:"+month);
         System.out.println("日:"+calendar2.get(Calendar.DATE));
         int hour=calendar2.get(Calendar.HOUR)+12;
       System.out.println("時:"+hour);
       System.out.println("分:"+calendar2.get(Calendar.MINUTE));
       System.out.println("秒:"+calendar2.get(Calendar.SECOND));
       
       
        //Calendar
類的方法
         String time3="2016-04-07 16:35:36";
       SimpleDateFormat matter3= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
       Date tr3=matter3.parse(time3);
       int year=tr3.getYear()+1900;
       System.out.println("年:"+year);
       int month2=tr3.getMonth()+1;
       System.out.println("月:"+month2);
       System.out.println("日:"+tr3.getDate());
       System.out.println("時:"+tr3.getHours());
       System.out.println("分:"+tr3.getMinutes());
       System.out.println("秒:"+tr3.getSeconds());
      
       //正則表示式

      Pattern p=Pattern.compile("(\\d{4})-(\\d{1,2})-(\\d{1,2})\\s(\\d{1,2}):(\\d{1,2}):(\\d{1,2})");  
      Matcher m=p.matcher("2016-04-07 16:35:36");  
      if(m.find()){  
          System.out.println("日期:"+m.group());  
          System.out.println("年:"+m.group(1));  
          System.out.println("月:"+m.group(2));  
          System.out.println("日:"+m.group(3));
          System.out.println("時:"+m.group(4));  
          System.out.println("分:"+m.group(5));  
          System.out.println("秒:"+m.group(6));
      } 

           //判斷並輸出該字串表示的時間是該年度第幾周、第幾天。
           String time="2016-04-07 16:35:36";
      SimpleDateFormat matter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      Date tr=matter.parse(time);
      Calendar calendar = Calendar.getInstance();
      calendar.setFirstDayOfWeek(Calendar.MONDAY);
      calendar.setTime(tr);
      System.out.println("這是"+calendar.get(Calendar.YEAR)+"中的第"+calendar.get(Calendar.WEEK_OF_YEAR)+"周");
      System.out.println("這是"+calendar.get(Calendar.YEAR)+"中的第"+calendar.get(Calendar.DAY_OF_YEAR)+"天");
       }


}