web-dev-qa-db-fra.com

Réglage de l'heure et de la date à la date du sélecteur et du sélecteur d'heure dans android

J'utilise un sélecteur de date et un sélecteur d'heure dans ma demande. Je veux définir la date et l'heure de chargement de la page. Est-ce possible? Comment?

44
andro-girl

J'ai résolu un problème similaire à moi comme suit

Calendar cal = Calendar.getInstance();

int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int min = cal.get(Calendar.MINUTE);

datePicker.updateDate(year, month, day);

timePicker.setCurrentHour(hour);
timePicker.setCurrentMinute(min);
117
0x5f3759df

Utilisation de JodaTime

JodaTime est une bibliothèque extrêmement populaire et utile pour gérer les dates et heures en Java. Si vous ne l'utilisez pas, je vous recommande fortement d'y jeter un œil.

Voici un exemple simple de la façon dont j'ai défini un DatePicker et TimePicker à partir d'un objet DateTime, qui pourrait être la date actuelle ou toute date du passé ou du futur (l'attribut dans ce cas s'appelle inspected_at):

DatePicker datePicker = (DatePicker) findViewById(R.id.inspected_at_date);
TimePicker timePicker = (TimePicker) findViewById(R.id.inspected_at_time);

DateTime inspected_at = DateTime.now()                // Typically pulled from DB.

int year    = inspected_at.getYear() ;
int month   = inspected_at.getMonthOfYear() - 1;      // Need to subtract 1 here.
int day     = inspected_at.getDayOfMonth();  
int hour    = inspected_at.getHourOfDay();
int minutes = inspected_at.getMinuteOfHour();

datePicker.updateDate(year, month, day);              // Set date.

timePicker.setCurrentHour(hour);                      // Set time.
timePicker.setCurrentMinute(minutes);

J'espère que ça t'as aidé.

JP

14
Joshua Pinter

Il existe une méthode updateDate pour le DatePicker.

Voici ce que j'utilise dans l'une de mes applications, sans utiliser de boîte de dialogue:

//set datePicker to position
String date_saved = project_row.getString(
    project_row.getColumnIndex("project_startdate"));

int day  = Integer.parseInt(date_saved.substring(0,2));
int year = Integer.parseInt(date_saved.substring(5,9));
String month = date_saved.substring(2,5);
int month_code = getMonthInt(month);

project_startdate_data = (DatePicker) findViewById(R.id.project_startdate_data);
project_startdate_data.updateDate(year, month_code, day);

project_row est mon curseur et la date est enregistrée dans la colonne project_startdate comme 22MAY2012

et vous en avez besoin:

private int getMonthInt(String month) {
    if (month.equalsIgnoreCase("JAN")) return 0;
    if (month.equalsIgnoreCase("FEB")) return 1;
    if (month.equalsIgnoreCase("MAR")) return 2;
    if (month.equalsIgnoreCase("APR")) return 3;
    if (month.equalsIgnoreCase("MAY")) return 4;
    if (month.equalsIgnoreCase("JUN")) return 5;
    if (month.equalsIgnoreCase("JUL")) return 6;
    if (month.equalsIgnoreCase("AUG")) return 7;
    if (month.equalsIgnoreCase("SEP")) return 8;
    if (month.equalsIgnoreCase("OCT")) return 9;
    if (month.equalsIgnoreCase("NOV")) return 10;
    if (month.equalsIgnoreCase("DEC")) return 11;

    //return -1 if month code not found
    return -1;
}
7
Mirko

Cochez ceci Comment utiliser la boîte de dialogue du sélecteur de date . et utiliser la fonction de mise à jour dans onCreate (); si par page se charge, vous voulez dire que l'activité commence ... j'espère que cela vous aidera.

2
Farhan

Vérifiez ceci .

Utilisez la fonction showDialog(TIME_DIALOG_ID); dans onCreate();

1
Jaydeep Khamar