Ma question est simple

Si je fais:

var start = System.currentTimeMillis

Je reçois:

start: Long = 1542717303659

Comment faire pour qu'une chaîne recherche quelque chose de lisible par un œil humain?:

Ex: "20/11/2018 13:30:10"

3
Anneso 20 nov. 2018 à 15:46

3 réponses

Meilleure réponse

Vous pouvez utiliser la bibliothèque java.time comme:

  val formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss")
  formatter.format(LocalDateTime.now)

Si vous ne disposez que de l'horodatage, cette solution devient un peu plus complexe:

formatter.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()), ZoneId.of("UTC")))

Ensuite, je prendrais java.text.SimpleDateFormat:

new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(System.currentTimeMillis())

Pour revenir à l'horodatage:

new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse( "02/12/2012 12:23:44" ).getTime
3
pme 21 nov. 2018 à 13:51

Vous pouvez utiliser la bibliothèque java.time et l'obtenir dans un format lisible comme ci-dessous en une ligne.

scala>  java.time.LocalDateTime.ofEpochSecond(System.currentTimeMillis/1000,0,java.time.ZoneOffset.UTC)
res31: java.time.LocalDateTime = 2018-11-21T18:37:49

scala>

Je plonge juste les millisecondes par 1000, pour que nous obtenions EpochSecond.

Pour le récupérer,

scala> java.time.LocalDateTime.parse("2018-11-21T18:41:29").toEpochSecond(java.time.ZoneOffset.UTC)
res40: Long = 1542825689

scala>
1
stack0114106 21 nov. 2018 à 18:45

Ne réfléchissez pas trop: rien de mal avec juste new Date(start).toString

2
Dima 20 nov. 2018 à 13:13