web-dev-qa-db-ja.com

Android:時刻ピッカーで時刻を設定し、時刻をテキストビューに表示する

私のアプリでは、テキストビューで午後7時と表示しています。テキストビューをクリックすると、タイムピッカーダイアログがポップアップします。そのタイムピッカーでは、テキストビューに表示されている時間とまったく同じ時間を表示する必要があります。しかし、私はそれを行う方法を取得していません。

コード

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm a");
        //int hr = 0;
        Date date = null;
        try 
        {
            date = sdf.parse(resDateArray[3]);
        } 
        catch (ParseException e) {
            e.printStackTrace();
        }
        final Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        //tp is reference variable for time picker

        tp.setCurrentHour(calendar.get(Calendar.HOUR));
        tp.setCurrentMinute(calendar.get(Calendar.MINUTE));

        }//else
14
Nitish

SimpleDateFormatからDateオブジェクトを取得するには、Stringを使用する必要があります。次に電話するだけ

picker.setCurrentHour(date.getHours())

そして

picker.setCurrentMinute(date.getMinutes())

Dateオブジェクトは非推奨であるため、代わりにCalendarを使用してください。 Calendarをそのようにインスタンス化できます:

Calendar c = Calendar.getInstance();
c.setTime(date);
picker.setCurrentHour(c.get(Calendar.HOUR_OF_DAY));
picker.setCurrentMinute(c.get(Calendat.MINUTE));

編集:完全なコード

        SimpleDateFormat sdf = new SimpleDateFormat("hh:ss");
        Date date = null;
        try {
            date = sdf.parse("07:00");
        } catch (ParseException e) {
        }
        Calendar c = Calendar.getInstance();
        c.setTime(date);

        TimePicker picker = new TimePicker(getApplicationContext());
        picker.setCurrentHour(c.get(Calendar.HOUR_OF_DAY));
        picker.setCurrentMinute(c.get(Calendar.MINUTE));
34
abecker

タイムピッカーウィジェットを使用していない次の形式を使用している場合は、これを使用してください。

mStartTime.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            new TimePickerDialog(AddAppointmentActivity.this, onStartTimeListener, calendar
                    .get(Calendar.HOUR), calendar.get(Calendar.MINUTE), false).show();

        }
    });

TimePickerDialog.OnTimeSetListener onStartTimeListener = new OnTimeSetListener() {

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        String AM_PM;
        int am_pm;

        mStartTime.setText(hourOfDay + " : " + minute + "  " + AM_PM);
        calendar.set(Calendar.HOUR, hourOfDay);
        calendar.set(Calendar.MINUTE, minute);

    }
};
4
Aravin

時間を取得するためにこのヘルパー関数を作成しました

        public static void showTime(final Context context, final TextView textView) {

    final Calendar myCalendar = Calendar.getInstance();
    TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            String am_pm = "";
            myCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
            myCalendar.set(Calendar.MINUTE, minute);
            if (myCalendar.get(Calendar.AM_PM) == Calendar.AM)
                am_pm = "AM";
            else if (myCalendar.get(Calendar.AM_PM) == Calendar.PM)
                am_pm = "PM";
            String strHrsToShow = (myCalendar.get(Calendar.HOUR) == 0) ? "12" : myCalendar.get(Calendar.HOUR) + "";
            //UIHelper.showLongToastInCenter(context, strHrsToShow + ":" + myCalendar.get(Calendar.MINUTE) + " " + am_pm);
            textView.setText(strHrsToShow + ":" + myCalendar.get(Calendar.MINUTE) + " " + am_pm);
        }
    };
    new TimePickerDialog(context, mTimeSetListener, myCalendar.get(Calendar.HOUR), myCalendar.get(Calendar.MINUTE), false).show();
}

必要な形式で現在の時刻を取得する方法は、次のコードを使用しています。 // PARAM Dateは、フォーマットする日付の日付です// PARAM currentFormat of date // PARAM requiredFormat of date

    public static String getFormattedDate(String date, String currentFormate, String requiredFormate) {
    //SimpleDateFormat formatActual = new SimpleDateFormat("yyyy - MM - dd");
    if (date != null) {
        SimpleDateFormat formatActual = new SimpleDateFormat(currentFormate);
        Date dateA = null;
        try {
            dateA = formatActual.parse(date);
            System.out.println(dateA);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        //SimpleDateFormat formatter = new SimpleDateFormat("dd MMM, yyyy");
        SimpleDateFormat formatter = new SimpleDateFormat(requiredFormate);
        String format = formatter.format(dateA);
        System.out.println(format);
        return format;
    } else {
        return "";
    }

}

getFormattedDateの使用法は:

       String date = getFormattedDate(dateYouWantToFormate,"hh:mm a","hh:mm");
2
Faraz Ahmed

現在TimePickerを使用している場合は、setCurrentHourとsetCurrentMinuteが廃止されているため、ビルドバージョンを確認することをお勧めします。

SimpleDateFormat sdf = new SimpleDateFormat("hh:ss");
Date date = null;
try {
    date = sdf.parse("07:00");
} catch (ParseException e) {
}
Calendar c = Calendar.getInstance();
c.setTime(date);

TimePicker timePicker = new TimePicker(getApplicationContext());

if (Build.VERSION.SDK_INT >= 23) {
    timePicker.setHour(calculateHours());
    timePicker.setMinute(calculateMinutes());
}
else {
    timePicker.setCurrentHour(calculateHours());
    timePicker.setCurrentMinute(calculateMinutes());
}
0
Brandon

SDKバージョン23以降のいくつかの変更。

            SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
            Date date = null;
            try {
                date = sdf.parse("12:02:32");
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            if(date != null) {
                Calendar c = Calendar.getInstance();
                c.setTime(date);
                sleepTimeStartPicker.setHour(c.get(Calendar.HOUR_OF_DAY));
                sleepTimeStartPicker.setMinute(c.get(Calendar.MINUTE));
            }
0
Savas Adar

AM/PMの場合は、そのためのロジックを実装する必要があります。これは、以下のとおりです。そうすることで、前述のように出力を取得できます。以下のコードを試してください...

int hr=tp.getCurrentHour();
String a="AM";
if(hr>=12){
    hr=hr-12;
    a="PM";
}
String tm=hr+":"+tp.getCurrentMinute()+" "+a;

Toast.makeText(MainActivity.this, tm, 500).show();
0