Comment formatez-vous la date et l'heure dans Android?

Comment formatez-vous correctement selon la configuration du périphérique une date et une heure lorsque vous avez une année, un mois, un jour, une heure et une minute?

  • Titane vs The Native Tools
  • L'initialisation de l'application est très lente: l'initialisation de FirebaseApp échouée
  • AppCompatEditText.getpParent () à l'intérieur de TextInputLayout renvoie FrameLayout
  • HttpResponse to String android
  • Bouton Matériau "fermer" dans la barre d'outils au lieu de Retour
  • OnCreateView () attendez que AsyncTask s'exécute?
  • Impossible de charger le moniteur d'appareil Android
  • Pouvez-vous utiliser un LoaderManager à partir d'un service?
  • Tirage de navigation Android sur les onglets
  • Qu'est-ce qu'un événement de presse à joues?
  • Comment obtenir la position actuelle de l'enfant de ViewFlipper
  • Publier un texte différent sur Facebook et Twitter en utilisant les intentions d'Android
  • 17 Solutions collect form web for “Comment formatez-vous la date et l'heure dans Android?”

    Utilisez la classe Java DateFormat standard.

    Par exemple, pour afficher la date et l'heure actuelles, procédez comme suit:

    Date date = new Date(location.getTime()); DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext()); mTimeText.setText("Time: " + dateFormat.format(date)); 

    Vous pouvez initialiser un objet Date avec vos propres valeurs, mais vous devez savoir que les constructeurs ont été obsolètes et que vous devriez vraiment utiliser un objet Calendrier Java.

    À mon avis, android.text.format.DateFormat.getDateFormat(context) me confond parce que cette méthode renvoie java.text.DateFormat plutôt que android.text.format.DateFormat – – ".

    Donc, j'utilise le code de fragment comme ci-dessous pour obtenir la date / heure actuelle dans mon format.

     android.text.format.DateFormat df = new android.text.format.DateFormat(); df.format("yyyy-MM-dd hh:mm:ss a", new java.util.Date()); or android.text.format.DateFormat.format("yyyy-MM-dd hh:mm:ss a", new java.util.Date()); 

    De plus, vous pouvez utiliser d'autres formats. Suivez DateFormat .

    Date à la chaîne de date locale:

     Date date = new Date(); String stringDate = DateFormat.getDateTimeInstance().format(date); 

    Options:

      DateFormat.getDateInstance() 

    -> 31 déc. 1969

      DateFormat.getDateTimeInstance() 

    -> 31 décembre 1969 16:00:00 PM

      DateFormat.getTimeInstance() 

    -> 4:00:00 PM

    Cela le fera:

     Date date = new Date(); java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext()); mTimeText.setText("Time: " + dateFormat.format(date)); 

    Utilisez SimpleDateFormat

    Comme ça:

     event.putExtra("starttime", "12/18/2012"); SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); Date date = format.parse(bundle.getString("starttime")); 

    Suite à ceci: http://developer.android.com/reference/android/text/format/Time.html

    Est-il préférable d'utiliser Android native Classe de temps:

     Time now = new Time(); now.setToNow(); 

    Puis formatez:

     Log.d("DEBUG", "Time "+now.format("%d.%m.%Y %H.%M.%S")); 

    C'est ma méthode, vous pouvez définir et entrer et produire le format.

     public static String formattedDateFromString(String inputFormat, String outputFormat, String inputDate){ if(inputFormat.equals("")){ // if inputFormat = "", set a default input format. inputFormat = "yyyy-MM-dd hh:mm:ss"; } if(outputFormat.equals("")){ outputFormat = "EEEE d 'de' MMMM 'del' yyyy"; // if inputFormat = "", set a default output format. } Date parsed = null; String outputDate = ""; SimpleDateFormat df_input = new SimpleDateFormat(inputFormat, java.util.Locale.getDefault()); SimpleDateFormat df_output = new SimpleDateFormat(outputFormat, java.util.Locale.getDefault()); // You can set a different Locale, This example set a locale of Country Mexico. //SimpleDateFormat df_input = new SimpleDateFormat(inputFormat, new Locale("es", "MX")); //SimpleDateFormat df_output = new SimpleDateFormat(outputFormat, new Locale("es", "MX")); try { parsed = df_input.parse(inputDate); outputDate = df_output.format(parsed); } catch (Exception e) { Log.e("formattedDateFromString", "Exception in formateDateFromstring(): " + e.getMessage()); } return outputDate; } 

    Utiliser build in Time class!

     Time time = new Time(); time.set(0, 0, 17, 4, 5, 1999); Log.i("DateTime", time.format("%d.%m.%Y %H:%M:%S")); 

    SimpleDateFormat

    J'utilise SimpleDateFormat sans motif personnalisé pour obtenir la date et l'heure réelles du système dans le format présélectionné de l'appareil :

     public static String getFormattedDate() { //SimpleDateFormat called without pattern return new SimpleDateFormat().format(Calendar.getInstance().getTime()); } 

    Retourne :

    • 13.01.15 11:45
    • 13/01/15 10h45

    Utilisez ces deux variables de classe:

      public java.text.DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); private Calendar mDate = null; 

    Et utilisez-le comme ceci:

      mDate = Calendar.getInstance(); mDate.set(year,months,day); dateFormat.format(mDate.getTime()); 

    Ce code renverrait la date et l'heure actuelles:

     public String getCurrDate() { String dt; Date cal = Calendar.getInstance().getTime(); dt = cal.toLocaleString(); return dt; } 

    Essayer:

     event.putExtra("startTime", "10/05/2012"); 

    Et lorsque vous accédez aux variables passées:

     SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); Date date = formatter.parse(bundle.getString("startTime")); 

    Je l'utilise comme ceci:

     public class DateUtils { static DateUtils instance; private final DateFormat dateFormat; private final DateFormat timeFormat; private DateUtils() { dateFormat = android.text.format.DateFormat.getDateFormat(MainApplication.context); timeFormat = android.text.format.DateFormat.getTimeFormat(MainApplication.context); } public static DateUtils getInstance() { if (instance == null) { instance = new DateUtils(); } return instance; } public synchronized static String formatDateTime(long timestamp) { long milliseconds = timestamp * 1000; Date dateTime = new Date(milliseconds); String date = getInstance().dateFormat.format(dateTime); String time = getInstance().timeFormat.format(dateTime); return date + " " + time; } } 

    Eviter le jugement

    Java.util.Date et .Calendar et SimpleDateFormat en Java (et Android) sont vraiment gênants. Évite-les. Ils sont tellement mauvais que Sun / Oracle a renoncé à eux, les supplantant avec le nouveau paquet java.time dans Java 8 (pas dans Android à partir de 2014). Le nouveau java.time été inspiré par la bibliothèque Joda-Time .

    Joda-Time

    Joda-Time fonctionne dans Android.

    Rechercher StackOverflow pour "Joda" pour trouver de nombreux exemples et beaucoup de discussion.

    Un tidbit de code source utilisant Joda-Time 2.4.

    Format standard.

     String output = DateTime.now().toString(); // Current date-time in user's default time zone with a String representation formatted to the ISO 8601 standard. 

    Format localisé.

     String output = DateTimeFormat.forStyle( "FF" ).print( DateTime.now() ); // Full (long) format localized for this user's language and culture. 

    Retour à 2016, Quand je veux personnaliser le format (pas selon la configuration du périphérique, comme vous le demandez). J'utilise habituellement le fichier de ressource de chaîne:

    Dans strings.xml:

     <string name="myDateFormat"><xliff:g id="myDateFormat">%1$td/%1$tm/%1$tY</xliff:g></string> 

    En activité:

     Log.d(TAG, "my custom date format: "+getString(R.string.myDateFormat, new Date())); 

    Ceci est également utile avec la publication de la nouvelle bibliothèque de reliure de date .

    Je peux donc avoir quelque chose comme ça dans le fichier de mise en page:

     <TextView android:id="@+id/text_release_date" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:padding="2dp" android:text="@{@string/myDateFormat(vm.releaseDate)}" tools:text="0000" /> 

    Et dans la classe java:

      MovieDetailViewModel vm = new MovieDetailViewModel(); vm.setReleaseDate(new Date()); 

    La classe de temps d'Android fournit 3 méthodes de formatage http://developer.android.com/reference/android/text/format/Time.html

    Voici comment je l'ai fait:

     /** * This method will format the data from the android Time class (eg. myTime.setToNow()) into the format * Date: dd.mm.yy Time: hh.mm.ss */ private String formatTime(String time) { String fullTime= ""; String[] sa = new String[2]; if(time.length()>1) { Time t = new Time(Time.getCurrentTimezone()); t.parse(time); // or t.setToNow(); String formattedTime = t.format("%d.%m.%Y %H.%M.%S"); int x = 0; for(String s : formattedTime.split("\\s",2)) { System.out.println("Value = " + s); sa[x] = s; x++; } fullTime = "Date: " + sa[0] + " Time: " + sa[1]; } else{ fullTime = "No time data"; } return fullTime; } 

    J'espère que cela est utile 🙂

    Il est trop tard, mais cela peut aider quelqu'un

     DateFormat.format(format, timeInMillis); 

    Le format ici est le format dont vous avez besoin

    Ex: "HH: mm" retourne 15:30

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.