Date、Calendar和GregorianCalendar的使用


java.util 包提供了 Date 類來封裝當前的日期和時間。 Date 類提供兩個構造函數來實例化 Date 對象。

第一個構造函數使用當前日期和時間來初始化對象。

 

Date

public static void  methodDate() {
// currentTimeMillis :返回以毫秒為單位的當前時間。 這個應該是system中的方法。

          Date date1=new Date();//默認當前時間
          Date date2=new Date(System.currentTimeMillis()-1000000L);
          
          System.out.println(date1);
          System.out.println(date2);
          //日期比較的方法
          boolean b1=date1.before(date2);//date1是否在date2之前
          System.out.println(b1);
          boolean b2=date1.after(date2);//date1是否在date2之后
          System.out.println(b2);
          boolean b3=date1.equals(date2);//date1是否等於date2
          System.out.println(b3);
          
          int b4=date1.compareTo(date2);//date1和date2進行比較
          System.out.println(b4);
          if (b4==0) {
              System.out.println("date1==date2");
          } else if(b4==1){
              System.out.println("date1>date2");
          }
          else {
              System.out.println("date1<date2");
          }
          
     }

 

Date轉字符串格式(日期進行格式化)

public static void methodSimpleDateFormat() {
          Date date=new Date();//當前時間
          //進行格式化
          String pattern="yyyy-MM-dd hh:mm:ss.ms";//設置格式
          SimpleDateFormat simpleDateFormat=new SimpleDateFormat(pattern);
          String myDate=simpleDateFormat.format(date);
          System.out.println(myDate);
          //一句話:得到當前時間的字符串格式
          //String nowStr=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.ms").format(new Date());
     }

 

字符串轉Date格式(字符串進行解析),自定義時間加try或throws

public static void methodStringToDate() {
          String string="2010/1/5 10:15:20";
          String pattern="yyyy/MM/dd hh:mm:ss";//設置對應格式
          SimpleDateFormat simpleDateFormat=new SimpleDateFormat(pattern);
          //把字符串進行解析
          try {
              Date date=simpleDateFormat.parse(string);
              System.out.println(date);
          } catch (ParseException e) {
              e.printStackTrace();
          }
     }

 

 

 Calendar:它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日歷字段之間的轉換提供了一些方法,並為操作日歷字段(例如獲得下星期的日期)提供了一些方法。

public static void methodCalendar() {
          //創建日歷類對象(默認時間是當前時間)
          Calendar calendar=Calendar.getInstance();//public static Calendar getInstance()
          //通過getTime()方法得到Date對象
          Date date=calendar.getTime();
          System.out.println(date);
          //如何獲取日歷中某一個部分的數據?
          //比如年、月(從0開始算)、日等等
          int year=calendar.get(Calendar.YEAR);
          int month=calendar.get(Calendar.MONTH)+1;
          int day1=calendar.get(Calendar.DATE);
          int day2=calendar.get(Calendar.DAY_OF_MONTH);
          int hour=calendar.get(Calendar.HOUR);//小時
          int minute=calendar.get(Calendar.MINUTE);//分鍾
          int second=calendar.get(Calendar.SECOND);//秒數
          int msecond=calendar.get(Calendar.MILLISECOND);//毫秒
          //星期
          //int week1=calendar.get(Calendar.WEDNESDAY);
          //int week2=calendar.get(Calendar.WEEK_OF_YEAR);
          //int week3=calendar.get(Calendar.WEEK_OF_MONTH);
          //星期:從星期天開始到星期六結束,分別用1到7表示
          int weekDay=calendar.get(Calendar.DAY_OF_WEEK);
          if (weekDay==Calendar.MONDAY) {
              //判斷是否是星期一
          }
          String[] weeks={"日","一","二","三","四","五","六"};
          
          System.out.println("年份:"+year);
          System.out.println("月份:"+month);
          System.out.println("日期:"+day1+"或"+day2);
          System.out.println("星期"+weeks[weekDay-1]);
     }








//Calendar 的自定義時間,自定義時間加try或throws
     public static void methodCalendar2() {
          Calendar calendar=Calendar.getInstance();
          try {
              //設置別的時間
              String time="2010-1-5";
              SimpleDateFormat sdt=new SimpleDateFormat("yyyy-MM-dd");
              Date date =sdt.parse(time);
              calendar.setTime(date);
              System.out.println(date);
              
          } catch (ParseException e) {
              
              e.printStackTrace();
          }
          
          System.out.println(calendar.getTime());//獲得年份
          
     }
     public static void methodCalendar3() {
          Calendar calendar=Calendar.getInstance();
          //日期的加減操作:add或roll方法
          calendar.add(Calendar.YEAR, 1);//年份+1
          calendar.add(Calendar.MONTH, 1);//月份+1
          calendar.add(Calendar.DATE, -1);//日期-1
          calendar.roll(Calendar.YEAR, -10);
          
          System.out.println(calendar.getTime());
     }
View Code

 

一般情況下,Date所提供的功能非常的有限,所以比較常用的是GregorianCalendar.

public static void testGregorianCalendar() {
          //GregorianCalendar標准日歷類
          //創建對象
          //1 默認當前時間
          //GregorianCalendar  gregorianCalendar=new GregorianCalendar();
          //2 按照指定年月日
          //GregorianCalendar gregorianCalendar=new GregorianCalendar(1990, 10, 12);
          //3 按照指定年月日時分秒
          GregorianCalendar gregorianCalendar=new GregorianCalendar(1990, 10, 12,10,20,30);
          
          System.out.println(gregorianCalendar.getTime());
          //獲取年份、月份等
          int year=gregorianCalendar.get(Calendar.YEAR);
          int month=gregorianCalendar.get(Calendar.MONTH)+1;
          //...
     }




     //
     public static void testCalendar() {
          //父類Calendar對象的創建
          //前兩種都是一樣的,表示當前時間
          //1
          //Calendar calendar=Calendar.getInstance();
          //2
          //Calendar calendar=new GregorianCalendar();
          //3
          Calendar calendar=new GregorianCalendar(2000,1,1);
     }



     public static void testGregorianCalendar2(){
          //創建子類對象
          GregorianCalendar gregorianCalendar=new GregorianCalendar();
          //今天是星期幾?
          //DateFormatSymbols封裝了關於星期、月份、時區等信息
          //獲取所有星期,第一個元素是空元素
          String[] weeks=new DateFormatSymbols().getWeekdays();
          for (String string : weeks) {
              System.out.println(string);
          }
          int week=gregorianCalendar.get(Calendar.DAY_OF_WEEK);//3
          System.out.println("今天是:"+weeks[week]);
          
          //
          //String[] months=new DateFormatSymbols().getMonths();
          //for (String string : months) {
              //System.out.println(string);
          //}
     }

     //日歷對象格式化方法一,
     public static void testGregorianCalendar3(){
          
          GregorianCalendar gregorianCalendar=new GregorianCalendar();
          Date date=gregorianCalendar.getTime();
          String pattern="yyyy年MM月dd日 hh:mm:ss";
          SimpleDateFormat sdf=new SimpleDateFormat(pattern);
          String strDate=sdf.format(date);
          System.out.println(strDate);
     }

     //日歷對象格式化方法二
     public static void testGregorianCalendar4() {
          GregorianCalendar gregorianCalendar=new GregorianCalendar();
          Date date=gregorianCalendar.getTime();
          //DateFormat格式化類
          //DateFormat df=DateFormat.getInstance();
          //格式化
          //String strDate=df.format(date);
          //System.out.println("默認時間格式:"+strDate);
          
          //DateFormat df=DateFormat.getDateInstance();
          //DateFormat df=DateFormat.getTimeInstance();
          //String strDate=df.format(date);
          //System.out.println(strDate);
          
          DateFormat df=DateFormat.getDateTimeInstance();
          String strDate=df.format(date);
          System.out.println(strDate);    
     }
     
     
     //通過獲取不同地區不同格式的時間
     public static void testGregorianCalendar5() {
          GregorianCalendar gregorianCalendar=new GregorianCalendar();
          Date date=gregorianCalendar.getTime();
          
          //地區(比如美國、中國)
          Locale[] locales={Locale.US,Locale.CHINA};
          //日期格式
          int[] styles={DateFormat.FULL,DateFormat.LONG,DateFormat.SHORT,DateFormat.MEDIUM};
          String[] strStyles={"完整日期","長日期","短日期","普通日期"};
          
          for (Locale locale : locales) {
               System.out.println(locale.getDisplayCountry()+"日期格式如下:");//

              for (int i = 0; i < styles.length; i++) {
DateFormat dateFormat1=DateFormat.getDateInstance(styles[i], locale);//獲得日期
DateFormat dateFormat2=DateFormat.getTimeInstance(styles[i], locale);//獲得時間
                   
                   System.out.print("\t"+strStyles[i]+"格式:");
                   System.out.println(dateFormat1.format(date)+" "+dateFormat2.format(date));
              }
}

美國日期格式如下:
     完整日期格式:Wednesday, January 17, 2018 3:58:55 PM CST
     長日期格式:January 17, 2018 3:58:55 PM CST
     短日期格式:1/17/18 3:58 PM
     普通日期格式:Jan 17, 2018 3:58:55 PM
中國日期格式如下:
     完整日期格式:2018年1月17日 星期三 下午03時58分55秒 CST
     長日期格式:2018年1月17日 下午03時58分55秒
     短日期格式:18-1-17 下午3:58
     普通日期格式:2018-1-17 15:58:55
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM