2016-10-01 1 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; DR

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

詳細

Chenchukによる回答が正しいと受け入れなければなりません。

その他の問題については、こちらをご覧ください。

戻るあなたはintプリミティブまたはIntegerオブジェクトとしてではなく、質問に見られるような文字列として分-の時間を返すことができる整数

ところで、 "Time"のようなあいまいな名前は避けてください。分時を意味するなら、そう言いなさい。

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

java.time

このすべてが不要です。厄介な古いレガシーの日時クラスを、java.timeクラスに置き換えて使用しています。 java.timeクラスは、すでにあなたの機能を提供しています。

あなたのコードでは、タイムゾーンの重要な問題は無視されます。これを省略すると、JVMの現在のデフォルトのタイムゾーンが暗黙的に適用されます。具体的にする方が良い。

タイムゾーンをZoneIdと定義します。これを使ってZonedDateTimeを現在の瞬間とします。 1分の時間を問い合わせます。 java.timeについて

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

java.timeフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは、java.util.Date,.Calendar、& java.text.SimpleDateFormatなどの面倒な古い日時クラスに取って代わります。

Joda-Timeプロジェクトは、今maintenance modeで、java.timeへの移行をアドバイスします。

Oracle Tutorialを参照して、詳細をご覧ください。そして、多くの例と説明のためにStack Overflowを検索してください。

java.time機能ThreeTen-BackportでJava 6 & 7に戻って、移植、さらにThreeTenABPAndroidに適合されているの多く(How to use…を参照)。

ThreeTen-Extraプロジェクトは、追加のクラスでjava.timeを拡張します。このプロジェクトは、将来のjava.timeへの追加の可能性を証明する土台です。ここでは、IntervalYearWeekYearQuartermoreなどの便利なクラスがあります。

関連する問題