wake-up-neo.com

zeitstempel in aktuelles Datum in Android konvertieren

Ich habe ein Problem mit der Anzeige des Datums. Ich bekomme einen Zeitstempel als 1379487711, aber die aktuelle Uhrzeit ist 9/18/2013 12:31:51 PM, aber die Uhrzeit wird als 17-41-1970 angezeigt. So zeigen Sie es als aktuelle Uhrzeit an.

zur Anzeige der Zeit habe ich folgende Methode verwendet:

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;
}

beachten Sie, dass ich die Zeit in setTimeInMillis so lang und nicht als int setze. Beachten Sie, dass mein Datumsformat MM und nicht mm ( mm ist für Minuten und nicht Monate) angegeben ist. Deshalb haben Sie einen Wert von "41" die Monate sollten sein)

70
Lena Bru

Zum Konvertieren des Zeitstempels in die aktuelle Uhrzeit 

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

zeitstempel in aktuelles Datum konvertieren:

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

Wenn Ihr Ergebnis immer 1970 zurückgibt, versuchen Sie es folgendermaßen:

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

Sie müssen Ihren TS-Wert mit 1000 multiplizieren

Es ist so einfach zu benutzen.

3
Paras Andani

Ich habe dies von hier: http://www.Java2s.com/Code/Android/Date-Type/CreateDatefromtimestamp.htm

Keine der obigen Antworten hat bei mir funktioniert.

Calendar c = Calendar.getInstance();
c.setTimeInMillis(Integer.parseInt(tripBookedTime) * 1000L);
Date d = c.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy");
return sdf.format(d);

Und nebenbei: ("dd-MM-yyyy", cal) wird von Android - "Methode kann nicht aufgelöst werden" nicht erkannt.

0
ekashking

tl; dr

Sie haben eine Anzahl von ganze Sekunden seit 1970-01-01T00:00:00Z statt Millisekunden.

Instant.ofEpochSecond( 1_379_487_711L )
       .toString()

2013-09-18T07: 01: 51Z

Ganze Sekunden gegen Millisekunden

Wie oben erwähnt, haben Sie eine Anzahl von Sekunden mit einer Anzahl von Millisekunden verwechselt.

Java.time verwenden

Die anderen Antworten sind möglicherweise korrekt, aber veraltet. Die störenden alten Datum-Zeit-Klassen, die dort verwendet wurden, sind jetzt veraltet und werden durch die Java.time-Klassen ersetzt. Für Android siehe die letzten Aufzählungszeichen.

Die Instant Klasse repräsentiert einen Moment auf der Timeline in UTC mit einer Auflösung von Nanosekunden (bis zu neun (9) Ziffern eines Dezimalbruchs). 

Instant instant = Instant.ofEpochSecond( 1_379_487_711L ) ;

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

Wenden Sie die Zeitzone an, durch die Sie diesen Moment anzeigen möchten.

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

zdt.toString (): 2013-09-18T03: 01: 51-04: 00 [America/Montreal]

Sehen Sie diesen Code live auf IdeOne.com .


Über Java.time

Das Java.time -Framework ist in Java 8 und höher integriert. Diese Klassen ersetzen die lästigen alten Legacy Date-Time-Klassen wie Java.util.Date , Calendar , & SimpleDateFormat .

Das Joda-Time - Projekt, jetzt im Wartungsmodus , empfiehlt die Migration zu den Java.time -Klassen.

Weitere Informationen finden Sie im Oracle Tutorial . In Stack Overflow finden Sie viele Beispiele und Erklärungen. Spezifikation ist JSR 310 .

Wo erhalten Sie die Java.time-Klassen? 

Das Projekt ThreeTen-Extra erweitert Java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Erweiterungen von Java.time. Hier finden Sie einige nützliche Klassen, wie zum Beispiel Interval , YearWeek , YearQuarter und more .

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

Der Variablentyp time_stamp_value ist long

Mit Ihrem Code wird es ungefähr so ​​aussehen:

private String getDate(long time_stamp_server) {

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

Ich ändere "Millisekunden" in time_stamp_server. Ändern Sie den Namen von Millisekunden in "c" oder in etwas Globaleres. "c" ist wirklich gut, weil es sich auf Zeit bezieht und auf viel globalere Art und Weise rechnet als Millisekunden. Sie benötigen also nicht unbedingt ein Kalenderobjekt zum Konvertieren, und es sollte so einfach sein. 

0
sivi

Wenn Sie möchten, dass die Chat-Nachricht wie eine App aussieht, verwenden Sie die Methode unten. Datumsformat, das Sie entsprechend Ihrer Anforderung ändern möchten. 

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