+1 Cela a été très utile. Étant nouveau, c'est tous ces petits morceaux dont nous avons besoin ... J'utilise Calendar pour obtenir la date julienne. Beaucoup plus facile que d'obtenir des millisecondes et de déterminer si la valeur est égale à aujourd'hui;)
Bill Mote
9
Mais d'où cela tire-t-il la date et l'heure? l'appareil Android se configure-t-il?
Kyle Clegg
12
@Kyle Oui, il est basé sur les paramètres / fuseau horaire de l'appareil. Citation du document : "La méthode getInstance de Calendar renvoie un calendrier dont les paramètres régionaux sont basés sur les paramètres système et dont les champs d'heure ont été initialisés avec la date et l'heure actuelles" - (au-dessus de la première ligne de code d'échantillonnage dans la documentation de la classe).
3
+1 cette solution a une précision en millisecondes, exactement ce dont j'avais besoin.
Igor Zelaya
42
Comme le dit @adamdport, cela ne répond pas réellement à la question ... Calendar.getInstance().getTime()ou Calendar.getInstance().getTimeInMillis()fonctionnera.
La classe Time remplace plus rapidement les classes java.util.Calendar et java.util.GregorianCalendar. Une instance de la classe Time représente un instant dans le temps, spécifié avec une seconde précision.
REMARQUE 1:
Cela fait plusieurs années que j'ai écrit cette réponse, et il s'agit d'une ancienne classe spécifique à Android et maintenant obsolète. Google indique désormais que "[t] sa classe a un certain nombre de problèmes et il est recommandé d'utiliser GregorianCalendar à la place".
REMARQUE 2: même si la Timeclasse a une toMillis(ignoreDaylightSavings)méthode, il s'agit simplement d'une commodité à passer aux méthodes qui attendent du temps en millisecondes. La valeur de temps n'est précise qu'à une seconde ; la partie en millisecondes est toujours 000. Si vous êtes en boucle
Time time =newTime(); time.setToNow();Log.d("TIME TEST",Long.toString(time.toMillis(false)));...do something that takes more than one millisecond, but less than one second ...
La séquence résultante répétera la même valeur, par exemple 1410543204000, jusqu'à ce que la seconde suivante ait commencé, moment auquel la 1410543205000répétition commencera.
@InsanityOnABun et Muhammad Babar. Non non Non. Les documents disent "spécifié avec une deuxième précision" Même le test le plus simple (obtenir l'heure actuelle dans une boucle, toMillis et enregistrer / imprimer le résultat) vous aurait montré que le temps résultant a 000 en millisecondes!
ToolmakerSteve
3
@IgorZelaya Si vous voulez une précision en millisecondes, vous faites probablement un chronométrage d'intervalle plutôt qu'une heure de la journée. Les documents Android recommandent le SystemClock.uptimeMillis()chronométrage d'intervalle. Étant donné que c'est ce que la plupart des fonctions intégrées utilisent, il y a une forte motivation pour qu'il soit bien implémenté sur tous les appareils. Voir la discussion dans SystemClock ... Si vous voulez corréler cela avec l'heure de la journée, dans l'application onResume, lisez ceci et Time / setToNow / toMillis. Rappelez-vous la différence entre ceux-ci.
> Cette classe est obsolète au niveau de l'API 22. Utilisez plutôt GregorianCalendar. Voir ici
Neo
En fait, il a GregorianCalendarété supplanté il y a des années en Java et plus tard en Android par les classes java.time , en particulier ZonedDateTime. Pour les versions antérieures d'Android, consultez les projets ThreeTen-Backport et ThreeTenABP .
Basil Bourque
367
Si vous souhaitez obtenir la date et l'heure dans un modèle spécifique, vous pouvez utiliser ce qui suit:
Cela donnera l'heure en UTC, devrait s'adapter aux fuseaux horaires.
Andras Balázs Lajtha
10
Attention, SimpleDateFormat peut être problématique si les performances sont un problème. Dans mon application, j'avais une vue personnalisée qui avait environ 20 étiquettes HH: MM qui représentaient des heures spécifiques (de longs entiers contenant des millisecondes) et un nombre égal de ressources pouvant être dessinées. Les premiers tests ont montré que l'interaction n'était pas aussi fluide que je le souhaitais. Lorsque j'ai profilé onDraw (), j'ai constaté que les appels SimpleTimeFormatter prenaient 80% du temps. En fait, je lis cette page dans le cadre d'une recherche d'un formateur plus efficace et pour en savoir plus sur les calendriers, etc.
William T. Mallard
3
Oui, mais plus. Je ne savais pas les frais généraux impliqués et j'avais supposé que c'était à peu près un POJO.
William T. Mallard du
32
En bref:String currentDateandTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
Pratik Butani
4
vous pouvez insérer sdf.setTimeZone(TimeZone.getDefault())au milieu
Harvey
231
Pour ceux qui préfèrent plutôt un format personnalisé, vous pouvez utiliser:
DateFormat df =newSimpleDateFormat("EEE, d MMM yyyy, HH:mm");String date = df.format(Calendar.getInstance().getTime());
Alors que vous pouvez avoir des modèles DateFormat tels que:
"yyyy.MM.dd G 'at' HH:mm:ss z"----2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz"-----------12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01
En fait, il est plus sûr de définir le fuseau horaire actuel sur l'appareil avec Time.getCurrentTimezone(), sinon vous obtiendrez l'heure actuelle en UTC.
Time today =newTime(Time.getCurrentTimezone());
today.setToNow();
Ensuite, vous pouvez obtenir tous les champs de date souhaités, comme par exemple:
textViewDay.setText(today.monthDay +"");// Day of the month (1-31)
textViewMonth.setText(today.month +"");// Month (0-11)
textViewYear.setText(today.year +"");// Year
textViewTime.setText(today.format("%k:%M:%S"));// Current time
Comme beaucoup de gens le soulignent, Google dit que cette classe a un certain nombre de problèmes et n'est plus censée être utilisée:
Cette classe a un certain nombre de problèmes et il est recommandé d'utiliser GregorianCalendar à la place.
Problèmes connus:
Pour des raisons historiques, lors de l'exécution des calculs de temps, toute l'arithmétique est actuellement effectuée à l'aide d'entiers 32 bits. Cela limite la plage de temps fiable représentable de 1902 à 2037.Voir l'article wikipedia sur le problème de l'année 2038 pour plus de détails. Ne comptez pas sur ce comportement; cela pourrait changer à l'avenir. L'appel de switchTimezone (String) à une date qui ne peut pas exister, telle qu'une heure de mur qui a été ignorée en raison d'une transition DST, entraînera une date en 1969 (c'est-à-dire -1, ou 1 seconde avant le 1er janvier 1970 UTC). Une grande partie du formatage / de l'analyse suppose du texte ASCII et ne convient donc pas à une utilisation avec des scripts non ASCII.
J'ai obtenu la date, le jour et l'heure actuels du système mais l'heure ne change pas. Je veux augmenter le temps secondes par secondes. Comment puis-je faire?
An Instantest un moment sur la timeline en UTC avec une résolution allant jusqu'à nanosecondes .
Instant instant =Instant.now();// Current moment in UTC.
Fuseau horaire
Appliquez un fuseau horaire ( ZoneId) pour obtenir un ZonedDateTime. Si vous omettez le fuseau horaire, le fuseau horaire par défaut actuel de votre machine virtuelle Java est implicitement appliqué. Mieux vaut spécifier explicitement le fuseau horaire souhaité / attendu.
ZoneId zoneId =ZoneId.of("America/Montreal");// Or "Asia/Kolkata", "Europe/Paris", and so on.ZonedDateTime zdt =ZonedDateTime.ofInstant( instant , zoneId );
Génération de chaînes
Vous pouvez facilement générer une Stringreprésentation textuelle de la valeur date-heure. Vous pouvez choisir un format standard, votre propre format personnalisé ou un format localisé automatiquement.
ISO 8601
Vous pouvez appeler les toStringméthodes pour mettre le texte en forme à l'aide de la norme ISO 8601 commune et sensée .
String output = instant.toString();
2016-03-23T03: 09: 01.613Z
Notez que pour ZonedDateTime, la toStringméthode étend la norme ISO 8601 en ajoutant le nom du fuseau horaire entre crochets. Informations extrêmement utiles et importantes, mais pas standard.
Spécifiez un Localepour une langue humaine (anglais, français , etc.) à utiliser pour traduire le nom du jour / mois et également pour définir les normes culturelles telles que l'ordre de l'année, du mois et de la date. Notez que cela Localen'a rien à voir avec le fuseau horaire.
formatter = formatter.withLocale(Locale.US );// Or Locale.CANADA_FRENCH or such.String output = zdt.format( formatter );
Localisation
Mieux encore, laissez java.time faire le travail de localisation automatiquement.
DateTimeFormatter formatter =DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM );String output = zdt.format( formatter.withLocale(Locale.US ));// Or Locale.CANADA_FRENCH and so on.
Pour en savoir plus, consultez le didacticiel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .
Vous pouvez échanger des objets java.time directement avec votre base de données. Utilisez un pilote JDBC compatible avec JDBC 4.2 ou version ultérieure. Pas besoin de chaînes, pas besoin de java.sql.*cours.
Versions ultérieures des implémentations de bundles Android des classes java.time.
Pour les versions antérieures d'Android (<26), le projet ThreeTenABP adapte ThreeTen-Backport (mentionné ci-dessus). Voir Comment utiliser ThreeTenABP… .
@ giraffe.guru Relisez ma réponse. Vous avez raté la troisième balle. Une grande partie de la fonctionnalité java.time est rétroportée vers Java 6 et 7 dans ThreeTen-Backport et adaptée à Android dans ThreeTenABP .
Basil Bourque
Instant.now()et ZonedDateTime.now()est requis API 26
Ryde
2
@Ryde Comme je l'ai dit à giraffe.guru, relisez ma réponse. Recherchez la troisième puce mentionnant "Android".
Basil Bourque
Je pense que vous avez raison: votre nouvelle table d'édition java.time transmet le message plus directement et plus facilement qu'une liste à puces. Si c'était moi, je pense que je compliquerais les choses un peu plus loin et mettrais une coche entre crochets (ou quelque chose de similaire) sous ThreeTenBackport / Java 8+ et également sous ThreeTenABP / Android 26+ car ces combinaisons fonctionnent, seulement il n'y a pas 'habituellement aucun intérêt à les utiliser. Des applications Android en cours de développement qui utilisent ThreeTenABP et ciblent une gamme de niveaux d'API Android à la fois au-dessus et en dessous du niveau 26. Il me semble que les développeurs choisissent bien dans ces cas.
Ole VV
1
@ OleV.V. Merci d'avoir suggéré une coche secondaire dans le tableau graphique. Je l'ai utilisé dans des versions ultérieures du tableau. Très amélioré.
Basil Bourque
52
Pour l'heure actuelle, vous pouvez utiliser System.currentTimeMillis()ce qui est standard en Java. Ensuite, vous pouvez l'utiliser pour créer une date
Date currentDate =newDate(System.currentTimeMillis());
Et comme mentionné par d'autres pour créer un temps
Time currentTime =newTime();
currentTime.setToNow();
Pas besoin de System.currentTimeMillis(); fait simplement new Date()la même chose .
Jonik
@Jonik Cannot resolve constructor Date()dans Android, le SDK Android utilise un mélange de Java 6 et 7.
surfer190
1
Je vous remercie. Date currentDate = new Date(System.currentTimeMillis());est correct
mghhgm
@mghhgm Non, new Date(System.currentTimeMillis())en faux : (a) c'est redondant, car c'est exactement la même chose que new Date(). (b) La java.util.Dateclasse gênante est désormais supplantée à java.time.Instantpartir de Java 8 et versions ultérieures. Rétroporté vers Java 6 et 7 dans le projet ThreeTen-Backport et vers une version antérieure d'Android (<26) dans ThreeTenABP .
Basil Bourque
37
Vous pouvez utiliser le code:
Calendar c =Calendar.getInstance();SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");String strDate = sdf.format(c.getTime());
Production:
2014-11-1100:47:55
Vous disposez également d'options de mise en forme supplémentaires à SimpleDateFormatpartir d' ici .
comment obtenir la date pour les 5-10 prochains jours ... est-ce un calcul manuel ici?
CoDe
@CoDe Vous utilisez la date pour cela
FindOutIslamNow
27
Il existe plusieurs options car Android est principalement Java, mais si vous souhaitez l'écrire dans une TextView, le code suivant ferait l'affaire:
String currentDateTimeString =DateFormat.getDateInstance().format(newDate());// textView is the TextView view that should display it
textView.setText(currentDateTimeString);
Vous devez utiliser Calendarou GregorianCalendar. La Dateclasse est obsolète.
Joseph Earl
Merci mon ami :) Je n'en avais aucune idée
dLobatog
12
Selon la documentation de référence Date () ( developer.android.com/reference/java/util/Date.html ), rien ne fait référence à la classe Date () dépréciée - cependant, plusieurs méthodes et constructeurs sont dépréciés.
Zac Seth
2
Cela produira un résultat incorrect dans le sens des paramètres utilisateur actuels (format 12/24, par exemple). Utilisez android.text.format.DateFormat.getTimeFormat (contexte contextuel) pour obtenir DateFormat pour les paramètres utilisateur actuels.
wonder.mice
@Zac vous avez raison, même la méthode getTime de Date est encore plus utilisée
G Era designator (before christ, after christ)
y Year(e.g.12or2012).Use either yy or yyyy.
M Monthin year.Numberof M's determine length of format (e.g. MM, MMM or MMMMM)
d Day in month. Number of d's determine length of format (e.g. d or dd)
h Hourof day,1-12(AM / PM)(normally hh)
H Hourof day,0-23(normally HH)
m Minutein hour,0-59(normally mm)
s Secondin minute,0-59(normally ss)
S Millisecondin second,0-999(normally SSS)
E Dayin week (e.g Monday,Tuesday etc.)
D Dayin year (1-366)
F Dayof week in month (e.g.1stThursdayofDecember)
w Weekin year (1-53)
W Weekin month (0-5)
a AM / PM marker
k Hourin day (1-24, unlike HH's 0-23)
K Hour in day, AM / PM (0-11)
z Time Zone
Je n'aime pas le couplage étroit entre logique de présentation et logique de processus; Je préfère une méthode qui ne fait que le formatage et prend un paramètre d'entrée de date. Je ne comprends pas non plus pourquoi vous utilisez 2 SimpleDateFormats et 2 Dates ... ne pouvez-vous pas simplement utiliser une fois "yyyy/MM/dd HH:mm"le format et le calendrier des appels?
AjahnCharles
12
Time time =newTime();
time.setToNow();System.out.println("time: "+ time.hour+":"+time.minute);
Cela vous donnera, par exemple, 12:32.
N'oubliez pas d'importer android.text.format.Time;
if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.O){
val current =LocalDateTime.now()
val formatter =DateTimeFormatter.ofPattern("dd.MM.yyyy. HH:mm:ss")var myDate:String= current.format(formatter)Log.d("Date","DATE : "+ myDate)}else{var date =Date()
val formatter =SimpleDateFormat("MMM dd yyyy HH:mma")
val myDate:String= formatter.format(date)Log.d("Date","DATE : "+ myDate)}
Modèles de formatage de date
"yyyy.MM.dd G 'at' HH:mm:ss z"----2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz"-----------12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01
Merci d'avoir voulu contribuer. Contribuez-vous quelque chose qui n'est pas déjà dans les 36 réponses précédentes? Dans tous les cas, vous utilisez toujours la SimpleDateFormatclasse notoirement gênante et obsolète . Même avant Oreo dont vous n'avez pas besoin, vous pouvez utiliser à la place ThreeTenABP , le backport de java.time, l'API Java moderne de date et d'heure.
Ole VV
11
Vous pouvez également utiliser android.os.SystemClock. Par exemple, SystemClock.elapsedRealtime () vous donnera des relevés d'heure plus précis lorsque le téléphone est en veille.
DateFormat df =newSimpleDateFormat("HH:mm");// Format timeString time = df.format(Calendar.getInstance().getTime());DateFormat df1 =newSimpleDateFormat("yyyy/MM/dd");// Format dateString date = df1.format(Calendar.getInstance().getTime());
C'est une doublure parfaite et une solution élégante. C'est tout ce qu'il faut, pas des solutions inutilement longues comme dans les autres réponses.
zeeshan
5
La méthode ci-dessous renverra la date et l'heure actuelles dans la chaîne, utilisez un fuseau horaire différent en fonction de votre fuseau horaire réel.J'ai utilisé GMT
Vous devez utiliser la classe Calender selon la nouvelle API. La classe de date est désormais obsolète.
Calendar cal =Calendar.getInstance();String date =""+cal.get(Calendar.DATE)+"-"+(cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.YEAR);String time =""+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE);
Date date =newDate();SimpleDateFormat dateFormatWithZone =newSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",Locale.getDefault());String currentDate = dateFormatWithZone.format(date);
Réponses:
Vous pouvez utiliser:
Calendrier contient de nombreuses constantes pour tout ce dont vous avez besoin.
Edit:
Vérifier la documentation de la classe Calendar
la source
Calendar.getInstance().getTime()
ouCalendar.getInstance().getTimeInMillis()
fonctionnera.Vous pouvez ( mais ne devriez plus - voir ci-dessous!) Utiliser android.text.format.Time :
De la référence liée ci-dessus:
REMARQUE 1: Cela fait plusieurs années que j'ai écrit cette réponse, et il s'agit d'une ancienne classe spécifique à Android et maintenant obsolète. Google indique désormais que "[t] sa classe a un certain nombre de problèmes et il est recommandé d'utiliser GregorianCalendar à la place".
REMARQUE 2: même si la
Time
classe a unetoMillis(ignoreDaylightSavings)
méthode, il s'agit simplement d'une commodité à passer aux méthodes qui attendent du temps en millisecondes. La valeur de temps n'est précise qu'à une seconde ; la partie en millisecondes est toujours000
. Si vous êtes en boucleLa séquence résultante répétera la même valeur, par exemple
1410543204000
, jusqu'à ce que la seconde suivante ait commencé, moment auquel la1410543205000
répétition commencera.la source
SystemClock.uptimeMillis()
chronométrage d'intervalle. Étant donné que c'est ce que la plupart des fonctions intégrées utilisent, il y a une forte motivation pour qu'il soit bien implémenté sur tous les appareils. Voir la discussion dans SystemClock ... Si vous voulez corréler cela avec l'heure de la journée, dans l'application onResume, lisez ceci et Time / setToNow / toMillis. Rappelez-vous la différence entre ceux-ci.GregorianCalendar
été supplanté il y a des années en Java et plus tard en Android par les classes java.time , en particulierZonedDateTime
. Pour les versions antérieures d'Android, consultez les projets ThreeTen-Backport et ThreeTenABP .Si vous souhaitez obtenir la date et l'heure dans un modèle spécifique, vous pouvez utiliser ce qui suit:
Ou,
Date :
Temps:
la source
String currentDateandTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
sdf.setTimeZone(TimeZone.getDefault())
au milieuPour ceux qui préfèrent plutôt un format personnalisé, vous pouvez utiliser:
Alors que vous pouvez avoir des modèles DateFormat tels que:
la source
En fait, il est plus sûr de définir le fuseau horaire actuel sur l'appareil avec
Time.getCurrentTimezone()
, sinon vous obtiendrez l'heure actuelle en UTC.Ensuite, vous pouvez obtenir tous les champs de date souhaités, comme par exemple:
Voir la classe android.text.format.Time pour tous les détails.
MISE À JOUR
Comme beaucoup de gens le soulignent, Google dit que cette classe a un certain nombre de problèmes et n'est plus censée être utilisée:
la source
Pour la date et l'heure actuelles, utilisez:
Quelles sorties:
la source
Essayez de cette façon Tous les formats sont indiqués ci-dessous pour obtenir le format de la date et de l'heure.
la source
tl; dr
…ou…
Détails
Les autres réponses, bien que correctes, sont obsolètes. Les anciennes classes de date-heure se sont avérées mal conçues, déroutantes et gênantes.
java.time
Ces anciennes classes ont été remplacées par le framework java.time .
Ces nouvelles classes sont inspirées du projet Joda-Time , qui a connu un grand succès , défini par JSR 310 et étendu par le projet ThreeTen-Extra .
Voir le didacticiel Oracle .
Instant
An
Instant
est un moment sur la timeline en UTC avec une résolution allant jusqu'à nanosecondes .Fuseau horaire
Appliquez un fuseau horaire (
ZoneId
) pour obtenir unZonedDateTime
. Si vous omettez le fuseau horaire, le fuseau horaire par défaut actuel de votre machine virtuelle Java est implicitement appliqué. Mieux vaut spécifier explicitement le fuseau horaire souhaité / attendu.Utilisez les noms de fuseau horaire approprié dans le format de
continent/region
tels queAmerica/Montreal
,Europe/Brussels
ouAsia/Kolkata
. N'utilisez jamais les abréviations de 3 à 4 lettres telles queEST
ouIST
car elles ne sont ni standardisées ni uniques.Génération de chaînes
Vous pouvez facilement générer une
String
représentation textuelle de la valeur date-heure. Vous pouvez choisir un format standard, votre propre format personnalisé ou un format localisé automatiquement.ISO 8601
Vous pouvez appeler les
toString
méthodes pour mettre le texte en forme à l'aide de la norme ISO 8601 commune et sensée .Notez que pour
ZonedDateTime
, latoString
méthode étend la norme ISO 8601 en ajoutant le nom du fuseau horaire entre crochets. Informations extrêmement utiles et importantes, mais pas standard.Format personnalisé
Ou spécifiez votre propre modèle de mise en forme avec la
DateTimeFormatter
classe.Spécifiez un
Locale
pour une langue humaine (anglais, français , etc.) à utiliser pour traduire le nom du jour / mois et également pour définir les normes culturelles telles que l'ordre de l'année, du mois et de la date. Notez que celaLocale
n'a rien à voir avec le fuseau horaire.Localisation
Mieux encore, laissez java.time faire le travail de localisation automatiquement.
À propos de java.time
Le framework java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciens gênants hérités des classes date-heure tels que
java.util.Date
,Calendar
, etSimpleDateFormat
.Le projet Joda-Time , désormais en mode maintenance , conseille la migration vers java.time classes .
Pour en savoir plus, consultez le didacticiel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .
Vous pouvez échanger des objets java.time directement avec votre base de données. Utilisez un pilote JDBC compatible avec JDBC 4.2 ou version ultérieure. Pas besoin de chaînes, pas besoin de
java.sql.*
cours.Où obtenir les classes java.time?
la source
Instant.now()
etZonedDateTime.now()
est requis API 26Pour l'heure actuelle, vous pouvez utiliser
System.currentTimeMillis()
ce qui est standard en Java. Ensuite, vous pouvez l'utiliser pour créer une dateEt comme mentionné par d'autres pour créer un temps
la source
System.currentTimeMillis()
; fait simplementnew Date()
la même chose .Cannot resolve constructor Date()
dans Android, le SDK Android utilise un mélange de Java 6 et 7.Date currentDate = new Date(System.currentTimeMillis());
est correctnew Date(System.currentTimeMillis())
en faux : (a) c'est redondant, car c'est exactement la même chose quenew Date()
. (b) Lajava.util.Date
classe gênante est désormais supplantée àjava.time.Instant
partir de Java 8 et versions ultérieures. Rétroporté vers Java 6 et 7 dans le projet ThreeTen-Backport et vers une version antérieure d'Android (<26) dans ThreeTenABP .Vous pouvez utiliser le code:
Production:
Vous disposez également d'options de mise en forme supplémentaires à
SimpleDateFormat
partir d' ici .la source
java.util.Date
,java.util.Calendar
etjava.text.SimpleDateFormat
sont désormais héritées , supplantées par les classes java.time intégrées à Java 8 et versions ultérieures. Voir Tutoriel par Oracle .Facile, vous pouvez disséquer l'heure pour obtenir des valeurs distinctes pour l'heure actuelle, comme suit:
Il en va de même pour la date, comme suit:
la source
Il existe plusieurs options car Android est principalement Java, mais si vous souhaitez l'écrire dans une TextView, le code suivant ferait l'affaire:
la source
Calendar
ouGregorianCalendar
. LaDate
classe est obsolète.Modèles de format de date
la source
la source
Il s'agit d'une méthode qui sera utile pour obtenir la date et l'heure:
Vous pouvez appeler cette méthode et obtenir les valeurs de date et d'heure actuelles:
la source
SimpleDateFormat
s et 2Date
s ... ne pouvez-vous pas simplement utiliser une fois"yyyy/MM/dd HH:mm"
le format et le calendrier des appels?Cela vous donnera, par exemple, 12:32.
N'oubliez pas d'importer android.text.format.Time;
la source
la source
Pour la date et l'heure actuelles avec format, utilisez
En Java
À Kotlin
Modèles de formatage de date
la source
SimpleDateFormat
classe notoirement gênante et obsolète . Même avant Oreo dont vous n'avez pas besoin, vous pouvez utiliser à la place ThreeTenABP , le backport de java.time, l'API Java moderne de date et d'heure.Vous pouvez également utiliser android.os.SystemClock. Par exemple, SystemClock.elapsedRealtime () vous donnera des relevés d'heure plus précis lorsque le téléphone est en veille.
la source
Si vous avez besoin de la date actuelle:
Si vous avez besoin de l'heure actuelle:
la source
Pour un format d'heure et de date personnalisé:
La sortie est comme le format ci-dessous: 2015-06-18T10: 15: 56-05: 00
la source
la source
Essayez cela fonctionne aussi pour moi.
la source
Vous pouvez obtenir la date en utilisant:
Cela vous donnera un résultat sous une belle forme, comme dans cet exemple: "2014/02/09".
la source
Time t = new Time();
utilisera le fuseau horaire par défaut. D'après mon expérience, par défaut == actuel.Eh bien, j'ai eu des problèmes avec certaines réponses de l'API, donc je fusionne ce code, j'espère qu'il les sert les gars:
Sortie: 15h25 - 03/10/2017
la source
Vous pouvez simplement utiliser le code suivant:
la source
Essaye ça
la source
La méthode ci-dessous renverra la date et l'heure actuelles dans la chaîne, utilisez un fuseau horaire différent en fonction de votre fuseau horaire réel.J'ai utilisé GMT
la source
Vous devez utiliser la classe Calender selon la nouvelle API. La classe de date est désormais obsolète.
la source
Essayez d'utiliser le code ci-dessous:
la source