Получить время из отдельных полей даты и времени - PullRequest
0 голосов
/ 28 апреля 2020

Я создаю экран для планирования встреч в моем приложении. У меня есть CalenderView, который используется для получения даты и TimePicker, чтобы выбрать время для встречи. Я хочу хранить эти данные (дата + время) в виде миллисекунд с той эпохи, чтобы я мог немного поработать с ними.

Как объединить дату и время из CalenderView и TimePicker и получить миллисекунды за kotlin?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

API LEVEL 26

Вам просто нужно использовать правильные методы вместо вызова конструкторов. Используйте parse для создания объектов локальной даты и местного времени, затем передайте эти два объекта методу LocalDateTime. После этого преобразуйте его в миллисекунды.

    LocalDate datePart = LocalDate.parse("2020-04-28");
    LocalTime timePart = LocalTime.parse("12:05:06");
    LocalDateTime dt = LocalDateTime.of(datePart, timePart);
    System.out.println(dt.toString());
    long timeInMilliseconds = dt.atOffset(ZoneOffset.UTC).toInstant().toEpochMilli();
    System.out.println(timeInMilliseconds);

Уровень API ниже 26

Используйте объект календаря:

        try {
            Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2020-04-28");
            Date startHour = new SimpleDateFormat("HH:mm").parse("12:05");
            Date combinedDate = combine(date, startHour);
            System.out.println(combinedDate.toString());
            System.out.println("Milli Seconds: " + combinedDate.getTime());
        } catch (Exception e) {
            e.printStackTrace();
        }

    private static Date combine(Date date, Date time) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(time);
        int hour = cal.get(Calendar.HOUR_OF_DAY);
        int min = cal.get(Calendar.MINUTE);
        cal.setTime(date);
        cal.set(Calendar.HOUR_OF_DAY, hour);
        cal.set(Calendar.MINUTE, min);
        return cal.getTime();
    }

Happy Кодировка:)

0 голосов
/ 28 апреля 2020

может быть, это может помочь:

CalendarView не включает информацию о времени (потому что это просто календарь). Если вы хотите сохранить информацию о времени и просто применить выбранные даты, попробуйте использовать метод Calender.set (), подобный этому

Исходный ответ: CalendarView getDate () не возвращает время

Вы используете: calendar.set(year, month, dayOfMonth); изнутри OnDateChangeListener

Затем вы можете использовать тот же подход для TimePicker и установки часов, минут и секунд.

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