Jak przekonwertować ciąg Date na długie milisekundy


Odpowiedzi:


154

Korzystanie z 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();

11

Najwyższy czas, aby ktoś udzielił nowoczesnej odpowiedzi na to pytanie. W 2012 roku, kiedy zadawano to pytanie, odpowiedzi zamieszczone wówczas również były dobre. Dlaczego w odpowiedziach opublikowanych w 2016 r. Wykorzystano również dawno przestarzałe zajęcia SimpleDateFormati Datejest to dla mnie nieco bardziej tajemnicze. java.time, nowoczesny interfejs API daty i czasu Javy, znany również jako JSR-310, jest o wiele przyjemniejszy w obsłudze. Możesz go używać na Androidzie za pośrednictwem ThreeTenABP, zobacz to pytanie: Jak używać ThreeTenABP w Android Project .

Do większości celów zalecam używanie milisekund od początku dnia w czasie UTC . Aby je uzyskać:

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

To drukuje:

1355270400000

Jeśli potrzebujesz godziny na początku dnia w określonej strefie czasowej, określ tę strefę zamiast czasu UTC, na przykład:

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

Zgodnie z oczekiwaniami daje to nieco inny wynik:

1355252400000

Kolejna kwestia, na którą należy zwrócić uwagę, pamiętaj o podaniu ustawień regionalnych do swojego DateTimeFormatter. Uznałem, że grudzień był angielski, są inne języki, w których ten miesiąc nazywa się tym samym, więc proszę samemu wybrać odpowiednią lokalizację. Jeśli nie podasz ustawień regionalnych, program formatujący użyje ustawień regionalnych maszyny JVM, które mogą działać w wielu przypadkach, a następnie pewnego dnia niespodziewanie zakończy się niepowodzeniem, gdy uruchomisz aplikację na urządzeniu z innymi ustawieniami regionalnymi.


9

Przyjrzyj się SimpleDateFormatklasie, która może analizować a Stringi zwracać a Dateoraz getTimemetodę Dateclass.



3

możesz użyć simpleDateFormat, aby przeanalizować datę w postaci ciągu.


1

Najłatwiej jest użyć Date Using Date () i getTime ()

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

1

używając uproszczonego formatu możesz to łatwo osiągnąć.

1) Najpierw przekonwertuj ciąg na java.Date przy użyciu simpledateformatter.

2) Użyj metody getTime, aby uzyskać liczbę milisekund od daty

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

więcej Przykład kliknij tutaj


0

Wypróbuj poniższy kod

        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();
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.