Подтвердить что ты не робот

Как преобразовать строку Date в long millseconds

У меня есть дата внутри строки, что-то вроде "12-Декабрь-2012". Как я могу преобразовать это в миллисекунды (длинный)?

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

Ответ 4

  • Сначала преобразуйте строку в java.util.Date, используя дату formatter
  • Используйте getTime(), чтобы получить количество миллисекунд с даты

Ответ 5

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

Ответ 6

используя упрощенный формат, вы можете легко его достичь.

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

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

more Пример здесь

Ответ 7

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

Для большинства целей я рекомендую использовать миллисекунды с эпохи в начале дня в формате UTC. Чтобы получить их:

    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. Я взял декабрь, чтобы быть английским, есть другие языки, где этот месяц называется одним и тем же, поэтому, пожалуйста, выберите правильный язык самостоятельно. Если вы не указали языковой стандарт, форматировщик будет использовать параметр локализации JVMs, который может работать во многих случаях, а затем неожиданно сбой в один день при запуске приложения на устройстве с другим языковым настройком.

Ответ 8

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

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

Ответ 9

Попробуйте ввести код

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