Як перетворити рядок 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 .

Для більшості цілей я рекомендую використовувати мілісекунди від епохи на початку дня в 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. Я прийняв грудень англійською мовою, є й інші мови, де цей місяць називається однаковим, тому, будь ласка, самостійно оберіть відповідну мову. Якщо ви не вказали локаль, програма форматування використовувала б налаштування мови JVM, яка може працювати в багатьох випадках, а потім несподівано не вдалася одного дня, коли ви запускаєте програму на пристрої з іншою настройкою мови.


9

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



3

Ви можете використовувати simpleDateFormat для синтаксичного аналізу дати рядка.


1

Найпростіший спосіб - використання дати за допомогою 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.