2012-11-05 11 views
16

Nie wiem jak przekształcić sygnaturę czasową na bieżąco. mam:Znacznik czasu do daty ciągów

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    TextView czas = (TextView)findViewById(R.id.textView1); 
    String S = "1350574775"; 
    czas.setText(getDate(S));   
} 



private String getDate(String timeStampStr){ 
    try{ 
     DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); 
     Date netDate = (new Date(Long.parseLong(timeStampStr))); 
     return sdf.format(netDate); 
    } catch (Exception ignored) { 
    return "xx"; 
    } 
} 

A odpowiedź brzmi: 16.01.1970, ale to jest błędne.

Odpowiedz

48

spróbować jeśli wystaje z formatem "1350574775", który jest w sekundach:

private void onCreate(Bundle bundle){ 
    .... 
    String S = "1350574775"; 

    //convert unix epoch timestamp (seconds) to milliseconds 
    long timestamp = Long.parseLong(s) * 1000L; 
    czas.setText(getDate(timestamp)); 
} 



private String getDate(long timeStamp){ 

    try{ 
     SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); 
     Date netDate = (new Date(timeStamp)); 
     return sdf.format(netDate); 
    } 
    catch(Exception ex){ 
     return "xx"; 
    } 
} 
+1

To nie jest praca w ith mnie, musi zmienić 1000 -> 1000L. –

+0

Dzięki @PinoyCoder, rozwiązano to dla mnie! –

+0

dziękuję, ta odpowiedź rozwiązała mój problem. ale jak uzyskać tę datę? w tym formacie 22 lip 2017 –

4
String S = "1350574775"; 

Wysyłasz swoją sygnaturę czasową w kilka sekund zamiast milisekund.

Czy ten, zamiast:

String S = "1350574775000"; 

Or, w swoim sposobie getDate, należy pomnożyć przez 1000L:

new Date(Long.parseLong(timeStampStr) * 1000L)