java-Date、SimpleDateFotmat、Calendar

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
 * java中的時間使用標準類庫的Date類表示,是用距離一個固定時間點的毫秒數(可正可負 long類型)表達一個特定的時間點
 * 距離UTC(世界調整時間) 1970年1月1日 00:00:00   CST
 *java.util.Date類封裝日期及時間信息,由於Date設計存在缺陷,所以在jdk1.1以後大部分方法被聲明過時的,不再建議使用。
 *現在僅僅用來表示時間。而與時間相關的操作全部使用Calendar來替代
 *
 */
public class DateDemo {
    public static void main(String[] args) throws ParseException {
        Date date=new Date();
        //系統當前的日期及時間信息,Date重寫了toString()方法,用一個字符串來描述當前Date對象所表示的時間。
        System.out.println(date);//Sat Jul 29 09:39:49 CST 2017

        /**使用setTime和getTime設置及獲取時間**/
        long time=date.getTime();
        System.out.println(time);//1970年1月1日至今的毫秒數
        time+=60*60*24*1000;
        date.setTime(time);
        System.out.println(date);//Sun Jul 30 09:57:35 CST 2017
        /**
         * SimpleDateFormat
         * java.text.SimpleDateFormat是一個以與語言環境有關的方式來格式化和解析日期的具體類。允許日期->文本,文本->日期
         * y:年  M:月 d:日 H:24小時制  h:12小時制  m:分鐘  s:秒 E:星期 a:上午下午
         * String format(Date date)按照SDF指定的日期格式將給定的date表示的日期轉換爲字符串
         * Date parse(String str)方法用於按照特定格式將表示是安靜的字符串轉換爲Date對象
         */
        Date now=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 -E-a HH:mm:ss");//2017年07月29日 -星期六-下午 15:33:10
        System.out.println(sdf.format(now));//日期轉換字符串
        String str="2017-07-12 15:12";
        SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm");
        System.out.println(sdf1.parse(str));//字符串轉換爲時間

        /**
         * Calendar
         * java.util.Calendar類用於封裝日曆信息,其主要作用在於方法可以對時間分量進行運算
         * Calendar是抽象類,其具體子類針對於不同國家的日曆系統,其中應用最廣泛的是GregorianCalendar(格里高利曆,陽曆)
         * Calendar提供了一個靜態方法getInstance來更具當前系統所在地區返回一個適用的實現類,大部分地區返回的都是陽曆實現類
         * 
         * Date getTime():Calendar提供的該方法可以獲取一個Date對象,該對象就表示當前Calendar所表示的日期
         * void setTime(Date date):使當前Calendar表示給定的Date所表示的日期
         */
        Calendar calendar=Calendar.getInstance();//當前系統時間
        System.out.println(calendar);//重寫了toString,但是直觀看不出日期
        Date date1=calendar.getTime();
        System.out.println(date1);
        /**
         * Calendar提供了方法:
         * int get(int field):該方法可以獲取當前Calendar中指定時間分量所對應的值
         * 時間分量是一個int值,在Calendar中有大量的常量定義了不同的時間分量
         */
        int year=calendar.get(Calendar.YEAR);//年
        int month=calendar.get(Calendar.MONTH)+1;//月  是從0開始的
        int day=calendar.get(Calendar.DAY_OF_MONTH);//月中的天 幾號
        int day1=calendar.get(Calendar.DAY_OF_WEEK);//週中的天 星期幾
        int day2=calendar.get(Calendar.DAY_OF_YEAR);//年中的天  今年的第幾天
        int day3=calendar.get(Calendar.DATE);//DATE等同於DAY_OF_MONTH 月中的天
        int hour=calendar.get(Calendar.HOUR);//12小時制
        int hour1=calendar.get(Calendar.HOUR_OF_DAY);//24小時制
        int minute=calendar.get(Calendar.MINUTE);//分鐘
        int second=calendar.get(Calendar.SECOND);//秒
        System.out.println(year+"-"+month+"-"+day+"-"+hour1+":"+minute+":"+second);//2017-7-29-15:33:10
        /**int getActualMaximum(int field):給定此Calendar的時間值,返回指定日曆字段可能擁有的最大值**/
        int max=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println("本月"+max+"天");//本月31天
        System.out.println("本年"+calendar.getActualMaximum(Calendar.DAY_OF_YEAR)+"天");//本年365天
        /**
         * void set(int field,int value)
         * 對指定時間分量設定指定的值
         * 表示2008-08-13 20:07:46
         */
        calendar.set(Calendar.YEAR, 2008);
        calendar.set(Calendar.MONTH,Calendar.AUGUST);
        calendar.set(Calendar.DAY_OF_MONTH,13);
        calendar.set(Calendar.HOUR_OF_DAY,20);
        calendar.set(Calendar.MINUTE, 7);
        calendar.set(Calendar.SECOND, 46);
        System.out.println(calendar.getTime());//Wed Aug 13 20:07:46 CST 2008
        /**
         * void add(int field,int value)
         * 對指定時間分量加上給定的值,若給定對的值爲負數則是減去給定的值
         */
        Calendar c=Calendar.getInstance();
        c.add(Calendar.YEAR, 3);//加三年
        c.add(Calendar.MONDAY, 2);//加2個月
        c.add(Calendar.DAY_OF_YEAR, 5);//加5天
//      c.set(Calendar.DAY_OF_WEEK, 2);//設置爲當週的週一
        System.out.println(c.getTime());
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章