web-dev-qa-db-fra.com

convertir l'horodatage en date du jour dans Android

J'ai un problème d'affichage de la date. L'horodatage est 1379487711, mais l'heure actuelle est 18/09/2013 12:31:51 PM, mais l'heure est 17-41-1970. Comment l'afficher comme heure actuelle.

pour afficher l'heure, j'ai utilisé la méthode suivante:

private String getDate(long milliSeconds) {
    // Create a DateFormatter object for displaying date in specified
    // format.
    SimpleDateFormat formatter = new SimpleDateFormat("dd-mm-yyyy");
    // Create a calendar object that will convert the date and time value in
    // milliseconds to date.
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis((int) milliSeconds);
    return formatter.format(calendar.getTime());
} 
33
jkk
private String getDate(long time) {
    Calendar cal = Calendar.getInstance(Locale.ENGLISH);
    cal.setTimeInMillis(time * 1000);
    String date = DateFormat.format("dd-MM-yyyy", cal).toString();
    return date;
}

remarquez que je mets le temps dans setTimeInMillis aussi long et non aussi int, remarquez que mon format de date a MM et non mm ( mm est pour minutes et pas mois, c’est pourquoi vous avez une valeur de "41" où les mois devraient être)

70
Lena Bru

Pour convertir l'horodatage en heure actuelle 

Calendar calendar = Calendar.getInstance();
TimeZone tz = TimeZone.getDefault();
calendar.add(Calendar.MILLISECOND, tz.getOffset(calendar.getTimeInMillis()));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
Java.util.Date currenTimeZone=new Java.util.Date((long)1379487711*1000);
Toast.makeText(TimeStampChkActivity.this, sdf.format(currenTimeZone), Toast.LENGTH_SHORT).show();
8
Kaushik

convertir l'horodatage en date actuelle:

private Date getDate(long time) {    
    Calendar cal = Calendar.getInstance();
       TimeZone tz = cal.getTimeZone();//get your local time zone.
       SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm a");
       sdf.setTimeZone(tz);//set time zone.
       String localTime = sdf.format(new Date(time) * 1000));
       Date date = new Date();
       try {
            date = sdf.parse(localTime);//get local date
        } catch (ParseException e) {
            e.printStackTrace();
        }
      return date;
    }
8
kyogs

Si votre résultat renvoie toujours 1970, essayez cette méthode:

Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(timestamp * 1000L);
String date = DateFormat.format("dd-MM-yyyy hh:mm:ss", cal).toString();

Vous devez multiplier votre valeur TS par 1000

C’est si facile à utiliser.

3
Paras Andani

tl; dr

Vous avez un nombre de secondes complètes depuis 1970-01-01T00:00:00Z plutôt que millisecondes.

Instant.ofEpochSecond( 1_379_487_711L )
       .toString()

2013-09-18T07: 01: 51Z

Des secondes entières contre des millisecondes

Comme indiqué ci-dessus, vous avez confondu un nombre de secondes avec un nombre de millisecondes.

Utiliser Java.time

Les autres réponses peuvent être correctes mais sont obsolètes. Les anciennes classes de date-heure gênantes utilisées ici sont maintenant héritées, supplantées par les classes Java.time Pour Android, voir les dernières puces ci-dessous.

La classe Instant représente un moment sur la ligne temporelle en UTC avec une résolution de nanosecondes (jusqu'à neuf (9) chiffres d'une fraction décimale). 

Instant instant = Instant.ofEpochSecond( 1_379_487_711L ) ;

instant.toString (): 2013-09-18T07: 01: 51Z

Appliquez le fuseau horaire à travers lequel vous voulez voir ce moment.

ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;

zdt.toString (): 2013-09-18T03: 01: 51-04: 00 [Amérique/Montréal]

Voir ceci code exécuté en direct sur IdeOne.com .


À propos de Java.time

Le cadre Java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciennes classes gênantes héritées _ date-heure telles que Java.util.Date , Calendar _, & SimpleDateFormat .

Le projet Joda-Time , désormais en mode maintenance , conseille de migrer vers les classes Java.time .

Pour en savoir plus, consultez le Tutoriel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .

Où obtenir les classes Java.time? 

Le projet ThreeTen-Extra étend Java.time avec des classes supplémentaires. Ce projet est un terrain d’essai pour d’éventuels ajouts à Java.time. Vous pouvez y trouver des classes utiles telles que Interval _, YearWeek , YearQuarter _ et plus _.

0
Basil Bourque
  DateFormat df = new SimpleDateFormat("HH:mm", Locale.US);
  final String time_chat_s = df.format(time_stamp_value);

Le type de variable time_stamp_value est long

Avec votre code, cela ressemblera à quelque chose comme ça:

private String getDate(long time_stamp_server) {

    SimpleDateFormat formatter = new SimpleDateFormat("dd-mm-yyyy");
    return formatter.format(time_stamp_server);
} 

Je change "millisecondes" en time_stamp_server. Envisagez de changer le nom de la milliseconde en "c" ou en un nom plus global. "c" est vraiment bon car il est lié au temps et à l'informatique de manière beaucoup plus globale que ne le fait en millisecondes. Ainsi, vous n'avez pas nécessairement besoin d'un objet de calendrier pour convertir et cela devrait être aussi simple que cela. 

0
sivi

Si vous souhaitez afficher le message de discussion en ligne comme une application, utilisez la méthode ci-dessous. format de date que vous voulez changer en fonction de vos besoins. 

public String DateFunction(long timestamp, boolean isToday)
{
    String sDate="";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
    Calendar c = Calendar.getInstance();
    Date netDate = null;
    try {
        netDate = (new Date(timestamp));
        sdf.format(netDate);
        sDate = sdf.format(netDate);
        String currentDateTimeString = sdf.format(c.getTime());
        c.add(Calendar.DATE, -1);
        String yesterdayDateTimeString =  sdf.format(c.getTime());
        if(currentDateTimeString.equals(sDate) && isToday) {
            sDate = "Today";
        } else if(yesterdayDateTimeString.equals(sDate) && isToday) {
            sDate = "Yesterday";
        }
    } catch (Exception e) {
        System.err.println("There's an error in the Date!");
    }
    return sDate;
}
0
Vinod Makode