22

私は今時間があります:

new Date();

また、いくつかの時間定数があります。たとえば、238 (午後 11 時または 23:00、午前 8 時または 08:00) です。2時間の定数の間の時間が今どうやって知ることができますか?

プログラムの一部のコードを実行する必要があるか、現在の時間が 2 時間以内の場合は実行しないでください。たとえば、すでに夕方で朝でない場合は一部のコードを実行しないでください。

よりよく説明するための画像を次に示します。

ここに画像の説明を入力

サイレント モードが起動しないいくつかの状況:

00:00 20.06.13 - 23:00 20.06.13 // after 23.00 can loud!!

23:00 20.06.13 - 15:00 20.06.13 // after 15.00 can loud!!

01:00 20.06.13 - 08:00 20.06.13 // after 08.00 can loud!!

21:00 20.06.13 - 08:00 20.06.13 // after 08.00 can loud!!
4

8 に答える 8

10
于 2015-01-05T18:34:17.877 に答える
7

これはよりクリーンなソリューションであり、機能すると思います。さまざまな時間パラメーターでテストしました。

        /**
         * @param fromHour Start Time
         * @param toHour Stop Time
         * @param now Current Time
         * @return true if Current Time is between fromHour and toHour
         */
        boolean isTimeBetweenTwoHours(int fromHour, int toHour, Calendar now) {
            //Start Time
            Calendar from = Calendar.getInstance();
            from.set(Calendar.HOUR_OF_DAY, fromHour);
            from.set(Calendar.MINUTE, 0);
            //Stop Time
            Calendar to = Calendar.getInstance();
            to.set(Calendar.HOUR_OF_DAY, toHour);
            to.set(Calendar.MINUTE, 0);

            if(to.before(from)) {
                if (now.after(to)) to.add(Calendar.DATE, 1);
                else from.add(Calendar.DATE, -1);
            }
            return now.after(from) && now.before(to);
        }
于 2016-12-21T20:14:06.373 に答える