2016-10-01 18 views
1

我正試圖收集小時的分鐘。這似乎在這個班上工作。現在我想在其他類中使用intTime進行一些計算。我如何返回intTime。 我嘗試在返回實例的屬性時使用相同的原則,但時間與我使用的任何對象無關。 getIntTime是否可行?返回到另一個班的時間

import java.text.SimpleDateFormat; 
import java.util.*; 

public class Time extends Database{ 
    public Time(){ 
     Calendar cal = Calendar.getInstance(); 
     SimpleDateFormat sdf = new SimpleDateFormat ("HH:mm:ss"); 
     String stringTime = sdf.format (cal.getTime()); 

     int intTime = 0; 

     stringTime = stringTime.substring(3,5); // retrieve the minutes (is recorded as string) 
     intTime = Integer.parseInt(stringTime); 
    } 

    public String getStringTime() { 
     return intTime; 
    } 

    public static void main (String[] args) { 
    } 
} 

回答

1

您需要將intTime定義爲類成員。在你的代碼中,intTime只在構造函數中是「活的」。

import java.text.SimpleDateFormat; 
import java.util.*; 

public class Time extends Database{ 
    // class member defined in the class but not inside a method. 
    private int intTime = 0; 
    public Time(){ 
     Calendar cal = Calendar.getInstance(); 
     SimpleDateFormat sdf = new SimpleDateFormat ("HH:mm:ss"); 
     String stringTime = sdf.format (cal.getTime()); 

     // vars defined here, will be gone when method execution is done. 

     stringTime = stringTime.substring(3,5); // retrieve the minutes (is recorded as string) 

     // setting the intTime of the instance. it will be available even when method execution is done. 
     intTime = Integer.parseInt(stringTime); 
    } 

    public String getStringTime() { 
     return intTime; 
    } 

    public static void main (String[] args) { 
     // code here 
    } 
} 
0

TL;博士

ZonedDateTime.now(ZoneId.of("America/Montreal")) 
      .get(ChronoUnit.MINUTE_OF_HOUR) 

詳細

通過Chenchuk的答案是正確的,應該被接受。

這裏介紹了其他一些問題。

返回一個整數

您可以返回分鐘-的小時爲int原始或Integer對象,而不是如出現在的問題的字符串。

順便說一句,避免一個模糊的名字,如「時間」。如果你的意思是分鐘,那就這麼說吧。

public int getMinuteOfHour() { 
    int m = Integer.parseInt(yourStringGoesHere) ; 
    return m ; 
} 

java.time

所有這是不必要的。您正在使用現在由java.time類取代的麻煩的舊式遺留日期 - 時間類。 java.time類已經提供了你的功能。

您的代碼忽略了時區的關鍵問題。如果省略,則隱式應用JVM的當前默認時區。更好的具體。

我們將時區定義爲ZoneId。用它來獲得當前時刻的ZonedDateTime。詢問每分鐘的時間。

ZoneId z = ZoneId.of("America/Montreal"); 
ZonedDateTime zdt = ZonedDateTime.now(z); 
int minuteOfHour = zdt.get(ChronoUnit.MINUTE_OF_HOUR); 

關於java.time

java.time框架是建立在Java 8和更高版本。這些類代替了令人討厭的舊日期時間類,例如java.util.Date,.Calendar,& java.text.SimpleDateFormat

Joda-Time項目現在位於maintenance mode,建議遷移到java.time。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。

大部分的java.time功能後移植到Java 6 和ThreeTenABP還適於Android(見How to use…)。

ThreeTen-Extra項目擴展java.time與其他類。這個項目是未來可能增加java.time的一個試驗場。您可以在這裏找到一些有用的類,如Interval,YearWeek,YearQuartermore

相關問題