So konvertieren Sie eine Zeichenfolge Datum in lange Millsekunden


Antworten:


149

Verwenden von SimpleDateFormat

String string_date = "12-December-2012";

SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
try {
    Date d = f.parse(string_date);
    long milliseconds = d.getTime();
} catch (ParseException e) {
    e.printStackTrace();
}

16
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();

9

Schauen Sie sich eine SimpleDateFormatKlasse an, die a analysieren kann, Stringund geben Sie a Dateund die getTimeMethode der DateKlasse zurück.


9

Es ist an der Zeit, dass jemand die moderne Antwort auf diese Frage gibt. Im Jahr 2012, als die Frage gestellt wurde, waren die damals auch veröffentlichten Antworten gute Antworten. Warum die 2016 veröffentlichten Antworten auch die damals längst veralteten Klassen verwenden SimpleDateFormatund Datemir ein bisschen rätselhafter sind. java.timeDie moderne Java-API für Datum und Uhrzeit, auch als JSR-310 bekannt, ist viel besser zu handhaben. Sie können es unter Android über ThreeTenABP verwenden. Weitere Informationen finden Sie unter : Verwendung von ThreeTenABP in Android Project .

Für die meisten Zwecke empfehle ich die Verwendung der Millisekunden seit der Epoche zu Beginn des Tages in UTC . Um diese zu erhalten:

    DateTimeFormatter dateFormatter
            = DateTimeFormatter.ofPattern("d-MMMM-uuuu", Locale.ENGLISH);
    String stringDate = "12-December-2012";
    long millisecondsSinceEpoch = LocalDate.parse(stringDate, dateFormatter)
            .atStartOfDay(ZoneOffset.UTC)
            .toInstant()
            .toEpochMilli();
    System.out.println(millisecondsSinceEpoch);

Dies druckt:

1355270400000

Wenn Sie die Uhrzeit zu Beginn des Tages in einer bestimmten Zeitzone benötigen, geben Sie diese Zeitzone anstelle von UTC an, zum Beispiel:

            .atStartOfDay(ZoneId.of("Asia/Karachi"))

Wie erwartet ergibt sich ein etwas anderes Ergebnis:

1355252400000

Ein weiterer zu beachtender Punkt: Denken Sie daran, Ihrem Gebietsschema ein Gebietsschema anzugeben DateTimeFormatter. Ich habe Dezember als Englisch genommen. Es gibt andere Sprachen, in denen dieser Monat gleich heißt. Wählen Sie also selbst das richtige Gebietsschema aus. Wenn Sie kein Gebietsschema angegeben haben, verwendet der Formatierer die Gebietsschemaeinstellung der JVM, die in vielen Fällen funktioniert, und schlägt dann eines Tages unerwartet fehl, wenn Sie Ihre App auf einem Gerät mit einer anderen Gebietsschemaeinstellung ausführen.



3

Mit simpleDateFormat können Sie das Zeichenfolgendatum analysieren.


0

Am einfachsten ist es, das Datum mit Date () und getTime () zu verwenden.

    Date dte=new Date();
    long milliSeconds = dte.getTime();
    String strLong = Long.toString(milliSeconds);
    System.out.println(milliSeconds)

0

Mit simpledateformat können Sie es leicht erreichen.

1) Konvertieren Sie zuerst einen String in java.Date mit dem simpledateformatter.

2) Verwenden Sie die getTime-Methode, um die Anzahl der Millisekunden ab dem Datum zu ermitteln

 public class test {
      public static void main(String[] args) {
      String currentDate = "01-March-2016";
      SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
     Date parseDate = f.parse(currentDate);
     long milliseconds = parseDate.getTime();
  }
        }

mehr Beispiel hier klicken


-1

Versuchen Sie es mit dem folgenden Code

        SimpleDateFormat f = new SimpleDateFormat("your_string_format", Locale.getDefault());
        Date d = null;
        try {
            d = f.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        long timeInMillis = d.getTime();
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.