1. 程式人生 > >Calendar and Date and simpleDateformat

Calendar and Date and simpleDateformat

package date_using;

import java.awt.image.SampleModel;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 *Calendar是單例模式,是根據子類 GregorianCalendar的例項實現的(多型)
 *
 * @author Administrator
 * @tags   
 * @copyright  katherinelove 
 * @date  2018年8月19日 上午9:21:39
 */
public class CalendarAndDate {
    public static void main(String[] args) throws ParseException {
        //獲取的唯一例項是子類GregorianCalendar的例項   多型形式    
        //date物件只是可以作為中間例項,已經過時了
        //只能例項化一個物件,但是可以自主設定時間
        Calendar cal1=Calendar.getInstance(); 
        
        int year=cal1.get(Calendar.YEAR);
        int month=cal1.get(Calendar.MONTH);
        int dayOfMonth=cal1.get(Calendar.DAY_OF_MONTH);
        int hour=cal1.get(Calendar.HOUR_OF_DAY);
        int minute=cal1.get(Calendar.MINUTE);
        int second=cal1.get(Calendar.SECOND);
        long msecond=cal1.get(Calendar.MILLISECOND);
        
        //如何組裝成固定格式
        //一是 string.format()方法
        //%02d  2表示兩位數,不足兩位補0
        String strTime=String.format("%d-%02d-%02d %d:%d:%d %d",
            year,month,dayOfMonth,hour,minute,second,msecond);
        System.out.println("當前時間是:"+strTime);
        
        //二是 利用Date.toLocalString()
        //為日曆設定格式
        cal1.set(2012,5,12,14,28,52);
        Date date=cal1.getTime();
        System.out.println("設定時間後:"+date.toLocaleString());
        
        //三是 利用SimpleDateFormat物件.format()方法格式化解釋時間
        //設定時間格式
        SimpleDateFormat format=
                new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        //date 作為中間物件  解析時間字串  SimpleDateFormat物件.parse(string)
        Date newDate=format.parse("2017-8-9 14:22:32:222");
        System.out.println("解析後時間:"+newDate.toLocaleString());
        
        
        //如何獲取另外一個時間物件 利用GregorianCalendar的例項化
//        GregorianCalendar cal=new GregorianCalendar();
        //為了獲取8月   要設定成(8-1)
        Calendar cal2=new GregorianCalendar(2012,(8-1),12);    //多型形式
        //cal2.getTimeInMillis()     
        //Calendar物件.getTimeInMillis() 獲取1900以來的毫秒數
        long diff=cal2.getTimeInMillis()-cal1.getTimeInMillis();
        int diffDay=(int)(diff/1000/60/60/24);
        System.out.println("時間差:"+diff+"ms");
        System.out.println("相差天數:"+diffDay+"D");
        
        //如何獲取當前時間各個field的取值範圍
        System.out.println("cal2當前時間年份最大值"+
        cal2.getActualMaximum(Calendar.YEAR));
        System.out.println("cal2當前時間年份最大值"+
                cal2.getActualMinimum(Calendar.YEAR));
    }

}