0

ユーザーが入力した日付に基づいて、Android アプリでカウントダウンを設定しようとしています。

したがって、ユーザーは EditText オブジェクトに日付を設定する日付ピッカーを持っており、[保存] をクリックすると、EditText オブジェクトから値を取得して以下のコードを実行する必要があります。

final EditText dateField = (EditText) findViewById(R.id.dateSentData);  
        String dateSent = dateField.getText().toString();
        Double date = Double.parseDouble(dateSent);

        Time TimerSet = new Time();
        TimerSet.set(date); //day month year
        TimerSet.normalize(true);
        long millis = TimerSet.toMillis(true);

        Time TimeNow = new Time();
        TimeNow.setToNow(); // set the date to Current Time
        TimeNow.normalize(true);
        long millis2 = TimeNow.toMillis(true);

        long millisset = millis - millis2; //subtract current from future to set the time remaining

        final int smillis = (int) (millis); //convert long to integer to display conversion results
        final int smillis2 = (int) (millis2);

new CountDownTimer(millisset, 1000) {
            public void onTick(long millisUntilFinished) {

                mText = (TextView)findViewById(R.id.weddingDateData);

                // decompose difference into days, hours, minutes and seconds 
                int weeks = (int) ((millisUntilFinished / 1000) /
                        604800);
                int days = (int) ((millisUntilFinished / 1000) / 86400);
                int hours = (int) (((millisUntilFinished / 1000) - (days
                        * 86400)) / 3600);
                int minutes = (int) (((millisUntilFinished / 1000) - ((days
                        * 86400) + (hours * 3600))) / 60);
                int seconds = (int) ((millisUntilFinished / 1000) % 60);
                int millicn = (int) (millisUntilFinished / 1000);

                mText.setText(" " +days);
            }
            public void onFinish() {

            }
        }.start();

上記のコードは、次の行で String または Double のみを除外しないと述べているため、実行されません:

TimerSet.set(date);

誰かがこれで私を助けてくれますか?

前もって感謝します

4

2 に答える 2

1

こんにちは、これを変更して日付と時刻を設定できます

TimerSet.set(date); 

これとともに

//TimerSet.set(int second, int minute, int hour, int monthDay, int month, int year) This is the structure for method TimerSet
TimerSet.set(0,25,24,12,7,2013);

したがって、日付と時刻は 12/07/2013 24:25:00 になります。

しかし、TimerSetでトーストを送信すると、日付に問題があると思います

Toast.makeText(MainActivity.this, "date: "+ TimerSet, Toast.LENGTH_LONG).show(); 

私が設定した日付は、これが2013年13月8日24:25:00であると言われています

だから私がしたことはこれを変えることです

Time TimerSet = new Time();
TimerSet.set(0,25,24,12,7,2013);

これで(月と日を1ずつ減らすことに注意してください)

int year = 2013;
int month = 7 - 1;
int day = 12 - 1;
int hour = 24;
int minutes = 55;
int seconds = 0;

Time TimerSet = new Time();
//set(int second, int minute, int hour, int monthDay, int month, int year)
TimerSet.set(seconds,minutes,hour,day,month,year);

これにより、正しい日付 12/07/2013 24:25:00 が得られます

これがあなたの助けになることを願っています。または、他の解決策がある場合は、他の方法で解決する方法を教えてください.

よろしくお願いします

于 2013-07-12T06:04:43.990 に答える
0

このメソッドは、エポックTime.setからのミリ秒を表す long 値を想定しています。

入力として受け取った日付形式に応じて、別の方法で日付を解析する必要があります。

于 2013-07-07T18:11:05.087 に答える