как я могу получить полную дату определенного формата строки - PullRequest
0 голосов
/ 30 мая 2018

У меня API содержит строковую дату с этим форматом "/ Date (1527677209864) /", как я могу получить дату и время для использования в приложении Android

Ответы [ 5 ]

0 голосов
/ 30 мая 2018

Попробуйте это

String jsonDate = "/Date(1527677209864)/";
        jsonDate = jsonDate.substring(6, 13);
        int unix_timestamp = Integer.parseInt(jsonDate);
        Date date = new Date(unix_timestamp);
0 голосов
/ 30 мая 2018

Мы должны отфильтровать значение timeInMillis из строки и преобразовать его в long, чтобы мы могли использовать или установить его в calendar и получить объект date.

Date convertToDate(String input) {

    // input = "/Date(1527677209864)/";

    String timeString = input.substring(6, input.length() - 2);

    Long time = Long.parseLong(timeString);
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(time);
    return calendar.getTime();
}

Затем мы можем отформатировать объект даты в строку в соответствии с нашим желанием или форматом.

String convertDateToString(Date date, String pattern) {
    SimpleDateFormat formatter = new SimpleDateFormat(pattern);
    return formatter.format(date);
}
0 голосов
/ 30 мая 2018

Удалить префикс /Date( и суффикс )/.Используйте результат для инициализации java.util.Date.

String dt = "/Date(1527677209864)/";
dt = dt.substring(6, dt.indexOf(")/"));
long timestamp = Long.parseLong(dt);
Date date = new Date(timestamp);

. Используйте SimpleDateFormat для форматирования этой даты в требуемый формат.

0 голосов
/ 30 мая 2018

Вы можете использовать Дата с номером эпохи в качестве параметра в конструкторе.

Сначала вы должны удалить /Date( и )/ из строки, это вы можете сделать с помощью регулярного выражения.

Pattern pattern = Pattern.compile("\\D+([0-9]+)\\D+");
Matcher matcher = pattern.matcher("/Date(1527677209864)/");

if (matcher.matches()) {
   long timestamp = Long.parseLong(matcher.group(1));
   Date actualDate = new Date(timestamp);
}
0 голосов
/ 30 мая 2018

Я предполагаю, что значение 1527677209864 является меткой времени, верно?Попробуйте эту функцию:

public static String getDateAndTime(@NotNull Context context, long timestamp) {

        Date date = new Date(timestamp * 1000);
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);

        DateFormat df = new SimpleDateFormat(getTimeFormat(context), Locale.getDefault());

        return df.format(date);

    }

Дайте мне знать, если это то, что вы искали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...