Calculer l'âge en utilisant la date de naissance
Je développe une application android pour trouver l'âge à partir de la date de naissance fournie par l'utilisateur.. trois modifiez-les textes sont là l'un pour le jour et deux autres pour le mois et l'année. J'ai obtenu le code de cette lien.. Mais je ne sais pas quoi faire... je suis en donnant le code jusqu'à présent j'ai créé... pls vérifier et de m'aider...
main_activity.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="32dp"
android:layout_marginTop="42dp"
android:ems="10"
android:inputType="date" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/editText1"
android:layout_below="@+id/editText1"
android:layout_marginTop="30dp"
android:ems="10"
android:inputType="date" />
<EditText
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/editText2"
android:layout_below="@+id/editText2"
android:layout_marginTop="24dp"
android:ems="10"
android:inputType="date" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText3"
android:layout_centerHorizontal="true"
android:layout_marginTop="82dp"
android:onClick="getAge"
android:text="Button" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_below="@+id/button1"
android:layout_marginTop="54dp"
android:text="TextView" />
</RelativeLayout>
MainActivity.java
public class MainActivity extends Activity {
long a =0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText et1 = (EditText) findViewById (R.id.editText1);
EditText et2 = (EditText) findViewById (R.id.editText2);
EditText et3 = (EditText) findViewById (R.id.editText3);
Button btn1 = (Button) findViewById (R.id.button1) ;
TextView tv1 = (TextView) findViewById (R.id.textView1);
}
public int getAge (int _year, int _month, int _day) {
GregorianCalendar cal = new GregorianCalendar();
int y, m, d, a;
y = cal.get(Calendar.YEAR);
m = cal.get(Calendar.MONTH);
d = cal.get(Calendar.DAY_OF_MONTH);
cal.set(_year, _month, _day);
a = y - cal.get(Calendar.YEAR);
if ((m < cal.get(Calendar.MONTH))
|| ((m == cal.get(Calendar.MONTH)) && (d < cal
.get(Calendar.DAY_OF_MONTH)))) {
--a;
}
if(a < 0)
throw new IllegalArgumentException("Age < 0");
return a;
}
}
- "a" représente l'âge?
- Mes conseils. Ne vous contentez pas de choisir le code écrit par quelqu'un d'autre en tant que tel. Faire une tentative de vous-même et de chercher de l'aide sur internet sur des problèmes techniques spécifiques seulement.
- ce ne "je ne sais pas quoi faire ensuite" signifie?
- Ce code semble assez inutile.
Vous devez vous connecter pour publier un commentaire.
Vous devez ajouter un écouteur de clics de votre bouton, puis à lui, calculer l'âge et l'afficher dans votre TextView.
Bouton cliquez sur juste de transmettre les valeurs de modifier des zones de texte pour la méthode et l'affichage de la valeur de retour dans le textview...
tl;dr
Détails
Vous utilisez gênants vieille date-classes de temps, maintenant, de l'héritage, supplanté par le java.les classes de temps.
La
LocalDate
classe représente une date uniquement de la valeur, sans le temps de la journée et sans fuseau horaire.Contrairement à l'héritage des classes, les mois ont sane numérotation 1-12 pour janvier-décembre.
Un fuseau horaire est crucial dans la détermination d'une date. Pour un moment donné, la date varie à travers le monde par zone. Par exemple, quelques minutes après minuit dans Paris, France est un nouveau jour, alors encore “hier” dans Montréal, Québec.
Spécifier un fuseau horaire nom dans le format de
continent/region
, commeAmerica/Montreal
,Africa/Casablanca
, ouPacific/Auckland
. Ne jamais utiliser de l'3-4 abréviation commeEST
ouIST
comme ils sont pas vrai fuseaux horaires, pas normalisée, et même pas unique(!).Représentant un laps de temps dans la granularité de jours-mois-années est faite avec le
Délai
classe.Pour obtenir une Chaîne de caractères en standard ISO 8601 format, appel
age.toString()
. Ou interroger pour chaque partie, les années, les mois, les jours.Sur java.temps
La java.le temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
,Agenda
, &SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenance, conseille la migration vers le java.le temps classes.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
,YearWeek
,YearQuarter
, et plus.D'abord créer une classe:
public class AgeCalculation {
}
puis il suffit d'appeler la méthode dans votre activité
java.util.Calendar
sont maintenant héritage, supplantée par la java.de temps les classes.