2010-11-26 18 views
1

In meiner Applikation für Android Konvertieren, Ich versuche, Datum/Zeit in Millisekunden, überprüfen Sie den Code unten zu konvertieren:Problem Facing Während Datum auf Millisekunden

public long Date_to_MilliSeconds(int day, int month, int year, int hour, int minute) 
{ 

     Calendar c = Calendar.getInstance(); 
     c.setTimeZone(TimeZone.getTimeZone("UTC")); 
     c.set(year, month, day, hour, minute, 00); 

     return c.getTimeInMillis(); 

} 

Problem: Ich erhalte 1290455340800 (Nov 22 14.49.00 EST 2010) für 22. November 19.49.00 EST 2010 (dh 5 Stunden zurück)

FYI, I am Currently in Indian TimeZone, but application can be executed from any country. so How do i exact Convert the date/time into the Milliseconds?

+0

Ist es der Teil des gleichen Problems von http://stackoverflow.com/questions/4275823/problem-while-fetching-milliseconds-from-date/4275873#4275873? –

Antwort

1

Diese Linie

c.setTimeZone(TimeZone.getTimeZone("UTC")); 

wahrscheinlich das Problem verursacht. Sie müssen die Zeitzone nicht so einstellen, wie der aktuelle Standard verwendet wird.

+0

ya du hast Recht, ich brauche nicht die TimeZone einstellen, ich habe die TimeZone "UTC" entfernt und jetzt funktioniert es gut, eigentlich habe ich versucht, ein Ereignis in den Kalender einzufügen, so jetzt die Zeit des Ereignisses richtig eingefügt –

+0

Danke für die großartige Unterstützung –

+0

@ PM - Paresh Mayani Kein Problem :) – Jim

1

Meine Vermutung ist, dass Sie Date_to_MilliSeconds(22, 10, 2010, 19, 49) anrufen. Ihr Code verwendet explizit UTC, also behandelt es alles, was Sie als UTC übergeben.

Genau wie Ihre previous question (was mich dazu verleitet, dies als ein Duplikat zu schließen) ist unklar, was Sie wirklich versuchen zu tun.

Wenn Sie eine lokale Zeit, um Ihre Methode zur Verfügung stellen möchten, müssen Sie eine lokale Zeitzone angeben. Wenn Sie eine lokale Zeit in der Benutzer-Zeitzone verwenden müssen, versuchen, die Zeitzone zu TimeZone.getDefault() Einstellung - obwohl ich würde erwarten, dass der Standard sowieso sein. Wenn Sie Ihrer Methode eine UTC-Zeit zuweisen möchten, müssen Sie eine UTC-Zeitzone angeben (so wie Sie hier sind).

Was Sie wirklich versuchen zu tun?

+0

ya jon du hast Recht, ich bin rund um mit dem "Timing" Problem, was mache ich, um eine Anwendung als solche zu machen, da es kein Timing Problem bekommen wird ?? –

+0

@PM - Paresh: Sie müssen viel klarer darüber sein, was Sie eigentlich bei jedem Schritt meinen - was ist Ihre Eingabe (eine Ortszeit in einer bestimmten Zeitzone? Eine Ortszeit ohne bestimmte Zeitzone? Eine UTC-Zeit?) und welche Ausgabe Sie benötigen. –

1

In diesem Stück Code, werden Sie die Menge von Millisekunden bekommen seit 01.01.1970 00.00 in Ihrer Zeitzone für 22. November 19.49.00 EST 2010 in UTC-Zeitzone. Warum stellen Sie die Zeitzone auf UTC ein?

+0

Ihre Antwort gab ein Licht in meinem Kopf, vielen Dank für die Unterstützung –

1

Die 5 Stunden Differenz ist die Differenz zwischen UTC und der EST. Sie können DateFormat.parse() verwenden, um das Eingabedatum zu analysieren, wenn es sich um eine Zeichenfolge handelt. Oder Sie können den obigen Code verwenden und die gewünschte Zeitzone in c.setTimeZone() übergeben - EST statt UTC eingeben.

+0

mein Leben !! aber lassen Sie mich wissen, werde ich Problem bekommen, während ich es von anderem Land als Indien prüfen werde? –

+0

Dies sollte nichts mit der Zeitzone zu tun haben, in der Sie die Anwendung ausführen. Wenn die Quelle datetime eine Zeitzone hat, wird sie von 'SimpleDateFormat.parse()' analysiert oder Sie verwenden diese in 'setTimezone()'. – cristis

0

ich dies mit:

public String timeToString(long time, String format) { 
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault()); 
    sdf.setTimeZone(TimeZone.getDefault()); 
    return sdf.format(time + TimeZone.getDefault().getRawOffset() 
      + TimeZone.getDefault().getDSTSavings()); 
} 

Ich denke, es ist die Time-Zone Probleme löst.

Verwandte Themen