Как преобразовать строку Date в длинные миллисекунды


Ответы:


154

Использование 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

Пора дать современный ответ на этот вопрос. В 2012 году, когда был задан вопрос, ответы, также опубликованные тогда, были хорошими ответами. Почему ответы размещены в 2016 году также использовать то давно устаревшие классы SimpleDateFormatи Dateнемного больше для меня загадкой. java.time, современный API даты и времени Java, также известный как JSR-310, намного приятнее работать. Вы можете использовать его на Android через ThreeTenABP, см. Этот вопрос: Как использовать ThreeTenABP в Android Project .

В большинстве случаев я рекомендую использовать миллисекунды с начала дня по всемирному координированному времени . Чтобы получить их:

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

Это печатает:

1355270400000

Если вам требуется время в начале дня в каком-то конкретном часовом поясе, укажите этот часовой пояс вместо UTC, например:

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

Как и ожидалось, это дает немного другой результат:

1355252400000

Еще одно замечание: не забудьте указать локаль для вашего DateTimeFormatter. Я решил, что декабрь будет английским, есть и другие языки, где этот месяц называется так же, поэтому выберите подходящий язык самостоятельно. Если вы не указали языковой стандарт, средство форматирования будет использовать параметр языкового стандарта JVM, который может работать во многих случаях, а затем неожиданно выйдет из строя однажды, когда вы запустите свое приложение на устройстве с другим параметром языкового стандарта.


9

Взгляните на SimpleDateFormatкласс, который может анализировать Stringи возвращать Dateи getTimeметод Dateкласса.



3

вы можете использовать simpleDateFormat для анализа даты в строке.


1

Самый простой способ - использовать Date Using Date () и getTime ()

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

1

используя simpledateformat, вы можете легко этого добиться.

1) Сначала преобразуйте строку в java.Date с помощью simpledateformatter.

2) Используйте метод getTime, чтобы получить количество миллисекунд с даты

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

подробнее Пример нажмите здесь


0

Попробуйте под кодом

        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();
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.