4.4其他對象API(System類,Runtime類,Math類,Date類,Calendar類)

1.System類

類中的方法和屬性都是靜態的。
屬性:outin都是不同的對象,可以調用不同的輸出輸入方法。

常見方法:
1.static long currentTimeMillis() 
         返回以毫秒爲單位的當前時間。 
   返回:當前時間與協調世界時 197011 日午夜之間的時間差(以毫秒爲單位測量)。

2.static void exit(int status) 
          終止當前正在運行的 Java 虛擬機。 
3.static void gc() 
          運行垃圾回收器。 
4.static Properties getProperties() 
          確定當前的系統屬性。Properties是HashTable的子類,Map集合。沒有泛型。

    /*
        Properties集合中存儲的都是String類型的鍵和值。
        最好使用它自己的存儲和取出的方法來完成元素的操作。
    存:
    Object setProperty(String key, String value) 
         調用 Hashtable 的方法 put。 
    取:
     Set<String> stringPropertyNames() 
         返回此屬性列表中的鍵集,其中該鍵及其對應值是字符串,如果在主屬性列表中未找到同名的鍵,則還包括默認屬性列表中不同的鍵。 
    */


     private static final String LINE_SEPARATOR = System.getProperty("line.separator"); //定義成全局常量

    public static void demo(){

        Properties prop = System.getProperties();
        Set<String> nameSet = prop.stringPropertyNames();
        for(String name: nameSet){
            String value = prop.getProperty(name);
            System.out.println(name+":\t\t"+value);
        }

        System.out.println("hello"+  LINE_SEPARATOR  + "world");   //實現任何平臺下的換行操作。

        System.setProperty("mykey","myvalue");   //給系統設置一些屬性信息,這些信息是全局的,其他程序都可以使用。
    }


系統屬性顯示:

java.runtime.name:      Java(TM) SE Runtime Environment  java運行環境名字
sun.boot.library.path:      D:\Java\jdk1.7.0_80\jre\bin  java啓動目錄
java.vm.version:        24.80-b11
java.vm.vendor:     Oracle Corporation
java.vendor.url:        http://java.oracle.com/
path.separator:     ;
java.vm.name:       Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg:      sun.io
user.script:        
user.country:       CN  用戶的國家
sun.java.launcher:      SUN_STANDARD
sun.os.patch.level:     
java.vm.specification.name:     Java Virtual Machine Specification
user.dir:       D:\Workspaces\MyEclipse Professional 2014\day15 當前用戶目錄
java.runtime.version:       1.7.0_80-b15
java.awt.graphicsenv:       sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs:     D:\Java\jdk1.7.0_80\jre\lib\endorsed
os.arch:        amd64
java.io.tmpdir:     C:\Users\ADMINI~1\AppData\Local\Temp\
line.separator:            行分隔符(在 UNIX 系統中是“/n”)

java.vm.specification.vendor:       Oracle Corporation
user.variant:       
os.name:        Windows 8.1   操作系統名稱  
sun.jnu.encoding:       GBK
java.library.path:      D:\Java\jdk1.7.0_80\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;D:\Java\jdk1.7.0_80\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;;.
java.specification.name:        Java Platform API Specification
java.class.version:     51.0
sun.management.compiler:        HotSpot 64-Bit Tiered Compilers
os.version:     6.3
user.home:      C:\Users\Administrator
user.timezone:      
java.awt.printerjob:        sun.awt.windows.WPrinterJob
file.encoding:      GBK   文件編碼
java.specification.version:     1.7
user.name:      言冘
java.class.path:        D:\Workspaces\MyEclipse Professional 2014\day15\bin
java.vm.specification.version:      1.7
sun.arch.data.model:        64
java.home:      D:\Java\jdk1.7.0_80\jre
sun.java.command:       cn.itcast.toolclass.arrays.demo.Demo
java.specification.vendor:      Oracle Corporation
user.language:      zh    用戶語言
awt.toolkit:        sun.awt.windows.WToolkit
java.vm.info:       mixed mode
java.version:       1.7.0_80
java.ext.dirs:      D:\Java\jdk1.7.0_80\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
sun.boot.class.path:        D:\Java\jdk1.7.0_80\jre\lib\resources.jar;D:\Java\jdk1.7.0_80\jre\lib\rt.jar;D:\Java\jdk1.7.0_80\jre\lib\sunrsasign.jar;D:\Java\jdk1.7.0_80\jre\lib\jsse.jar;D:\Java\jdk1.7.0_80\jre\lib\jce.jar;D:\Java\jdk1.7.0_80\jre\lib\charsets.jar;D:\Java\jdk1.7.0_80\jre\lib\jfr.jar;D:\Java\jdk1.7.0_80\jre\classes
java.vendor:        Oracle Corporation
file.separator:     \
java.vendor.url.bug:        http://bugreport.sun.com/bugreport/
sun.cpu.endian:     little
sun.io.unicode.encoding:        UnicodeLittle
sun.desktop:        windows
sun.cpu.isalist:        amd64



getProperties 的 API:

getProperties
public static Properties getProperties()
確定當前的系統屬性。 
首先,如果有安全管理器,則不帶參數直接調用其 checkPropertiesAccess 方法。這可能導致一個安全性異常。 

將 getProperty(String) 方法使用的當前系統屬性集合作爲 Properties 對象返回。如果沒有當前系統屬性集合,則先創建並初始化一個系統屬性集合。這個系統屬性集合總是包含以下鍵的值: 鍵 相關值的描述 

java.version Java 運行時環境版本 
java.vendor Java 運行時環境供應商 
java.vendor.url Java 供應商的 URL 
java.home Java 安裝目錄 
java.vm.specification.version Java 虛擬機規範版本 
java.vm.specification.vendor Java 虛擬機規範供應商 
java.vm.specification.name Java 虛擬機規範名稱 
java.vm.version Java 虛擬機實現版本 
java.vm.vendor Java 虛擬機實現供應商 
java.vm.name Java 虛擬機實現名稱 
java.specification.version Java 運行時環境規範版本 
java.specification.vendor Java 運行時環境規範供應商 
java.specification.name Java 運行時環境規範名稱 
java.class.version Java 類格式版本號 
java.class.path Java 類路徑 
java.library.path 加載庫時搜索的路徑列表 
java.io.tmpdir 默認的臨時文件路徑 
java.compiler 要使用的 JIT 編譯器的名稱 
java.ext.dirs 一個或多個擴展目錄的路徑 
os.name 操作系統的名稱 
os.arch 操作系統的架構 
os.version 操作系統的版本 
file.separator 文件分隔符(在 UNIX 系統中是“/”) 
path.separator 路徑分隔符(在 UNIX 系統中是“:”) 
line.separator 行分隔符(在 UNIX 系統中是“/n”) 
user.name 用戶的賬戶名稱 
user.home 用戶的主目錄 
user.dir 用戶的當前工作目錄 


系統屬性值中的多個路徑是用平臺的路徑分隔符分隔的。 

注意,即使安全管理器不允許執行 getProperties 操作,它可能也會選擇允許執行 getProperty(String) 操作。 

返回:
系統屬性 
拋出: 
SecurityException - 如果安全管理器存在並且其 checkPropertiesAccess 方法不允許訪問系統屬性。

2.Runtime類

/*
Runtime:
沒有構造方法摘要,說明該類不能創建對象。
而且方法大多都是非靜態的,說明該類應該提供靜態的方法返回該類對象。
靜態方法只有一個,說明Runtime類使用了單例設計模式。
這個靜態方法是
static Runtime getRuntime() 
          返回與當前 Java 應用程序相關的運行時對象。 
*/
常用方法:
1.執行:
 Process exec(String command) 
          在單獨的進程中執行指定的字符串命令。 

    ①它的返回類型是Process的對象,一個抽象類。
    ②Runtime.exec 方法是用來創建一個本機進程,Process 子類是用來控制進程並獲得相關信息。
        Process類控制子進程的常用方法:
                    1.abstract void destroy() 
                             殺掉子進程。 

Runtime r = Runtime.getRuntime();  //通過工廠方法獲得Runtime的對象(execute:執行,xxx.exe)
Process p = r.exec("D:\\notepad.exe C:\\time.java");  //執行命令:用一個應用程序解析一個文件

Thread.sleep(5000);  //暫停5秒

p.destroy();    //殺死進程

3.Math類:

/*
    Math:提供了操作數學運算的方法。都是靜態的。

常用的方法:
    1.絕對值:double,float,int,long。
            static double abs(double a) 
                  返回 double 值的絕對值。 
     2.取整:
         向上取整:double
             static double ceil(double a) 
              返回最小的(最接近負無窮大)double 值,該值大於等於參數,並等於某個整數。 
         向下取整:double
             static double floor(double a) 
              返回最大的(最接近正無窮大)double 值,該值小於等於參數,並等於某個整數。 
         四捨五入取整:double,float
             static long round(double a) 
              返回最接近參數的 long。
      3.最值:double,float,int,long。
          最大:
              static double max(double a, double b) 
                  返回兩個 double 值中較大的一個。   
          最小:
              static double min(double a, double b) 
              返回兩個 double 值中較小的一個 
       4.a^b:
            static double pow(double a, double b) 
              返回第一個參數的第二個參數次冪的值。 
       5.立方:
           static double cbrt(double a) 
              返回 double 值的立方根。 
       6.僞隨機數:
           static double random() 
              返回帶正號的 double 值,該值大於等於 0.0 且小於 1.0。 

           Math.ceil(Math.random()*10);  //0.0~10.0
           Math.floor(Math.random()*10);  //0.0~9.0

           (int)(Math.random()*10+1);   //1~10
           (int)(Math.random()*6+1);   //1~6

         Rundom類:也有僞隨機數方法nextDouble()。
             Random r= new Random();
             int i = (int)(r.nextDouble()*6+1); //1~6

             int i = r.nextInt(6)+1; //1~6

            其他方法:
             int nextInt() 
                  返回下一個僞隨機數,它是此隨機數生成器的序列中均勻分佈的 int 值。 
             int nextInt(int n)  //0~n,不包括n
                   返回一個僞隨機數,它是取自此隨機數生成器序列的、在 0(包括)和指定值(不包括)之間均勻分佈的 int 值。 
             long nextLong() 
                      返回下一個僞隨機數,它是取自此隨機數生成器序列的均勻分佈的 long 值。      
              float nextFloat() 
                      返回下一個僞隨機數,它是取自此隨機數生成器序列的、在 0.01.0 之間均勻分佈的 float 值。 
            boolean nextBoolean() 
                      返回下一個僞隨機數,它是取自此隨機數生成器序列的均勻分佈的 boolean 值。 

*/

4.Date類: java.util.Date;

構造方法:
Date() 
          分配 Date 對象並初始化此對象,以表示分配它的時間(精確到毫秒)。
Date(long date) 
          分配 Date 對象並初始化此對象,以表示自從標準基準時間(稱爲“曆元(epoch)”,即 19701100:00:00 GMT)以來的指定毫秒數。

/*
    日期對象和毫秒值之間的轉換:

        毫秒值-->日期對象:這樣可以通過Date對象的方法對該日期中的各個字段(年月日等)進行操作。
            1.通過Date對象的構造方法 new Date(timeMillis);
            2.通過setTime設置:
                void setTime(long time) 
                        設置此 Date 對象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以後 time 毫秒的時間點。 


        日期對象-->毫秒值:這樣可以通過具體的數值進行運算。
            1. getTime設置:
                 long  getTime() 
                        返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對象表示的毫秒數。               
*/

    public static void main(String[] args) {

        long time = System.currentTimeMillis(); //1509105754163
//      System.out.println(time);

        Date date1 = new Date(1509105754163l);  //將指定毫秒值封裝成Date對象。
        System.out.println(date1);  //Fri Oct 27 20:02:34 CST 2017

        Date date2 = new Date();  //將當前日期和時間封裝成Date對象。
        System.out.println(date2); //Fri Oct 27 20:04:22 CST 2017
    }

1.日期比較:
boolean after(Date when) 
          測試此日期是否在指定日期之後。 
boolean before(Date when) 
          測試此日期是否在指定日期之前。 
boolean equals(Object obj) 
          比較兩個日期的相等性。

使用這一個方法就可以實現上面所有方法:
int compareTo(Date anotherDate)   //一般用於排序
          比較兩個日期的順序。    

日期對象 轉換成 日期格式字符串:

1.Date類 API中相關解釋:
從 JDK 1.1 開始,應該使用 Calendar 類實現日期和時間字段之間獲取,設置,偏移等操作,使用 DateFormat 類來格式化和解析日期字符串。Date 中的相應方法已廢棄。

2.DateFormat 類:java.text.Format.DateFormat,抽象類,提供了靜態工廠方法獲得對象。

DateFormat類 API中相關解釋:
①日期格式器getDateInstance():
要格式化一個當前語言環境下的日期,可使用某個靜態工廠方法: 
  myString = DateFormat.getDateInstance().format(myDate);

要格式化不同語言環境的日期,可在 getDateInstance() 的調用中指定它。 
  DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE); 

如果格式化多個日期,那麼獲取該格式並多次使用它是更爲高效的做法,這樣系統就不必多次獲取有關環境語言和國家/地區約定的信息了。 
  DateFormat df = DateFormat.getDateInstance();
  for (int i = 0; i < myDate.length; ++i) {
    output.println(df.format(myDate[i]) + "; ");
  }

還可使用 DateFormat 進行解析。 
  myDate = df.parse(myString);


另外:還提供了一些其他靜態工廠方法:
②時間格式器:使用 getTimeInstance 可獲取該國家/地區的時間格式。
static DateFormat getTimeInstance() 
          獲取時間格式器,該格式器具有默認語言環境的默認格式化風格。 
static DateFormat getTimeInstance(int style) 
          獲取時間格式器,該格式器具有默認語言環境的給定格式化風格。 
static DateFormat getTimeInstance(int style, Locale aLocale) 
          獲取時間格式器,該格式器具有給定語言環境的給定格式化風格。 

③日期/時間格式器:使用 getDateTimeInstance 可獲取日期和時間格式。
static DateFormat getDateTimeInstance() 
          獲取日期/時間格式器,該格式器具有默認語言環境的默認格式化風格。 
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle) 
          獲取日期/時間格式器,該格式器具有默認語言環境的給定日期和時間格式化風格。 
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale) 
          獲取日期/時間格式器,該格式器具有給定語言環境的給定格式化風格。
      參數:
    dateStyle - 給定的日期格式化風格。
    timeStyle - 給定的時間格式化風格。
    aLocale - 給定的語言環境。 

可以將不同選項傳入這些工廠方法,以控制結果的長度(從 SHORT 到 MEDIUM 到 LONG 再到 FULL)。確切的結果取決於語言環境,但是通常: 
SHORT 完全爲數字,如 12.13.523:30pm 
MEDIUM 較長,如 Jan 12, 1952 
LONG 更長,如 January 12, 19523:30:32pm 
FULL 是完全指定,如 Tuesday、April 121952 AD 或 3:30:42pm PST。


getDateInstance API:

public static final DateFormat getDateInstance()
獲取日期格式器,該格式器具有默認語言環境的默認格式化風格。 
public static final DateFormat getDateInstance(int style)
獲取日期格式器,該格式器具有默認語言環境的給定格式化風格。 
public static final DateFormat getDateInstance(int style,Locale aLocale)
獲取日期格式器,該格式器具有給定語言環境的給定格式化風格。 

參數:
style - 給定的格式化風格。例如,SHORT 用於 US 語言環境中的 "M/d/yy"。
aLocale - 給定的語言環境。 


format方法:
public final String format(Date date)將一個 Date 格式化爲日期/時間字符串。


例子:
/*
        對日期對象進行格式化。
 */
    public static void main(String[] args) {
        Date date =new Date();

        //獲取日期格式器。具有默認語言環境的指定格式化風格。
        DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
        //獲取時間格式器。具有默認語言環境的指定格式化風格。     
        DateFormat dateFormat1 = DateFormat.getTimeInstance(DateFormat.FULL);
        //獲取日期/時間格式器。具有默認語言環境的指定格式化風格。
        DateFormat dateFormat2= DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);

        //通過格式器調用格式化Date對象的方法進行格式化
        String str = dateFormat.format(date);
        String str1 = dateFormat1.format(date);
        String str2 = dateFormat2.format(date);

        System.out.println("日期格式化:\t"+str);
        System.out.println("時間格式化:\t"+str1);
        System.out.println("日期/時間格式化:\t"+str2);

    }
顯示:
日期格式化:      20171027日 星期五
時間格式化:      下午091123秒 CST
日期/時間格式化:   20171027日 下午091123

日期對象 轉換成 自定義格式字符串:

SimpleDateFormat類:DataFormate的子類。
構造方法:
SimpleDateFormat(String pattern) 
          用給定的模式和默認語言環境的日期格式符號構造 SimpleDateFormat。

Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyy--MM--dd");

String str = dateFormat.format(date);
System.out.println(str);

附:
字母  日期或時間元素         表示          示例  
G   Era標誌符           Text           AD  
y       年                Year       1996; 96  
M  年中的月份            Month       July; Jul; 07  
w  年中的週數            Number          27  
W  月份中的週數           Number          2  
D  年中的天數            Number          189  
d  月份中的天數           Number          10  
F  月份中的星期           Number          2  
E  星期中的天數           Text        Tuesday; Tue  
a  Am/pm 標記             Text            PM  
H  一天中的小時數(0-23)    Number          0  
k  一天中的小時數(1-24)    Number          24  
K  am/pm 中的小時數(0-11)    Number          0  
h  am/pm 中的小時數(1-12)    Number          12  
m  小時中的分鐘數              Number          30  
s  分鐘中的秒數           Number           55  
S  毫秒數                  Number          978  
z  時區           General time zone   Pacific Standard Time; PST; GMT-08:00  
Z  時區           RFC 822 time zone   -0800  

示例:
日期和時間模式                             結果  
"yyyy.MM.dd G 'at' HH:mm:ss z"      2001.07.04 AD at 12:08:56 PDT  
"EEE, MMM d, ''yy"                  Wed, Jul 4, '01  
"h:mm a"                            12:08 PM  
"hh 'o''clock' a, zzzz"             12 o'clock PM, Pacific Daylight Time  
"K:mm a, z"                         0:08 PM, PDT  
"yyyyy.MMMMM.dd GGG hh:mm aaa"      02001.July.04 AD 12:08 PM  
"EEE, d MMM yyyy HH:mm:ss Z"        Wed, 4 Jul 2001 12:08:56 -0700  
"yyMMddHHmmssZ"                     010704120856-0700  
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"        2001-07-04T12:08:56.235-0700  

日期格式字符串 轉換成 日期對象:

DateFormat的parse方法:
    Date parse(String source) 
         從給定字符串的開始解析文本,以生成一個日期。 
例子:
//      String str = "2012-4-19";
//      DateFormat dateFormat = DateFormat.getDateInstance();

//      String str = "2012年4月19日";
//      DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);

        String str = "2012---4---19";
        DateFormat dateFormat = new SimpleDateFormat("yyyy---MM---dd");

        Date date = dateFormat.parse(str);
        System.out.println(date);

Date類練習:

    /*
        練習:
                "2012-3-13""2012-4-6"中間有多少天?
        思路:
            兩個日期相減。
            必須有兩個減法運算的數。
            能減的可以是毫秒值。
            通過date對象。
            將字符串轉成date對象。

        1.將日期格式的字符串轉成date對象。
        2.date對象轉成毫秒值。
        3.相減,變成天數。
      */
    public static void main(String[] args) throws ParseException {
        String str1 = "2017-10-27";
        String str2 = "2017-12-26";

        int timeDay = method(str1,str2);
        System.out.println(timeDay);

    }

    private static int method(String str1, String str2) throws ParseException {

        DateFormat dateFormat = DateFormat.getDateInstance();
        Date date1 = dateFormat.parse(str1);
        Date date2 = dateFormat.parse(str2);

        int timeDay = (int)(Math.abs(date2.getTime()-date1.getTime())/1000/60/60/24);
        return timeDay;
    }

3.Calendar 日曆類: java.util.Calendar, 抽象類 。

Date API:  從 JDK 1.1 開始,應該使用 Calendar 類實現日期和時間字段的獲取,設置,偏移等操作。
靜態工廠方法:
static Calendar getInstance() 
          使用默認時區和語言環境獲得一個日曆。 
static Calendar getInstance(Locale aLocale) 
          使用默認時區和指定語言環境獲得一個日曆。 
static Calendar getInstance(TimeZone zone) 
          使用指定時區和默認語言環境獲得一個日曆。 
static Calendar getInstance(TimeZone zone, Locale aLocale) 
          使用指定時區和語言環境獲得一個日曆。 


Calendar c = Calendar.getInstance();
System.out.println(c);

輸出:
java.util.GregorianCalendar[
time=1509114443842,
areFieldsSet=true,
areAllFieldsSet=true,
lenient=true,
zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],
firstDayOfWeek=1,
minimalDaysInFirstWeek=1,
ERA=1,
YEAR=2017,
MONTH=9,
WEEK_OF_YEAR=43,
WEEK_OF_MONTH=4,D
AY_OF_MONTH=27,
DAY_OF_YEAR=300,
DAY_OF_WEEK=6,
DAY_OF_WEEK_IN_MONTH=4,
AM_PM=1,
HOUR=10,
HOUR_OF_DAY=22,
MINUTE=27,
SECOND=23,
MILLISECOND=842,Z
ONE_OFFSET=28800000,
DST_OFFSET=0
]

通過字段獲取值的方法:
    public int get(int field)
        返回給定日曆字段的值。

System.out.println(c.get(Calendar.YEAR));  //2017

int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int day = c.get(Calendar.DAY_OF_MONTH);
String week = getWeek(c.get(Calendar.DAY_OF_WEEK));

System.out.println(year+"年" + month+ "月" + day+"日" +"  "+week); //2017年10月27日  星期五

public static String getWeek(int i){
    String[] week= {"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
    return week[i-1];
}

Calendar日曆類練習:

//設置日期:
void set(int field, int value) 
          將給定的日曆字段設置爲給定值。 
void set(int year, int month, int date) 
          設置日曆字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。 
void set(int year, int month, int date, int hourOfDay, int minute) 
          設置日曆字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。 
void set(int year, int month, int date, int hourOfDay, int minute, int second) 
          設置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。 


Calendar c = Calendar.getInstance();
c.set(2011,3,20);

//日期的偏移:
abstract  void add(int field, int amount) 
          根據日曆的規則,爲給定的日曆字段添加或減去指定的時間量。 

 c.add(Calendar.YEAR,-2);
 c.add(Calendar.DAY_OF_MONTH,12);  //記住時間是連續性的

//Calendar類轉換成Date對象: 從而使用Date的格式化輸出。
 Date getTime() 
      返回一個表示此 Calendar 時間值(從曆元至現在的毫秒偏移量)的 Date 對象。 



/*
    任何一年中的2月有多少天?
*/
public static void main(String[] args) {

        int year = 2017;

        showDays(year);
    }

private static void showDay(int year) {

        Calendar c = Calendar.getInstance();

        c.set(year, 2, 1);
        c.add(Calendar.DAY_OF_MONTH, -1);

        System.out.println(c.get(Calendar.DAY_OF_MONTH));
    }

/*
    輸出昨天的現在的這個時刻。
*/
public static void main(String[] args) {

        showLastDay();
    }

private static void showLastDays() {

        Calendar c = Calendar.getInstance();

        c.add(Calendar.DAY_OF_MONTH, -1);

        DateFormat dateFormat = DateFormat.getTimeInstance();

        System.out.println(c.get(Calendar.YEAR)+"-"+(c.get(Calendar.MONTH)+1)+"-"+c.get(Calendar.DAY_OF_MONTH)+ "  " +dateFormat.format(c.getTime()));
        //2017-10-26  23:28:48
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章