Как конвертировать дату и время только во время?

#flutter #dart

Вопрос:

Я получаю по API такие данные о времени и дате 2021-09-05T18:16:47.790601 02:00 , как я могу получить только часы отсюда?

Комментарии:

1. вы можете использовать hour геттер следующим образом: int hoursOnly = myDateTime.hour;

2. @AdnanAlshami Спасибо за ответ. Как преобразовать эти данные из строки в дату и время?

3. вы можете использовать DateTime.parse("2021-09-05T18:16:47.790601 02:00"); для преобразования строки в дату.

Ответ №1:

Из API вы получаете отформатированную дату и хотите получить только час.

Во-первых, было бы лучше, если бы вы получили из API дату UNIX (если она доступна), которая имеет формат метки времени, подобный этому: https://www.unixtimestamp.com

Ваш первый вопрос был бы более или:

Как получить от выбранной даты метку времени, чтобы получить час

или

Как разобрать строку, чтобы получить час.

Здесь форматированный метод:

Дата и время, которые должны вам помочь: https://api.flutter.dev/flutter/dart-core/DateTime-class.html

Вот пример:

 final DateTime myDate = DateTime.parse('2021-09-05 18:16:47');
final int hour = myDate.hour;
final int minute = myDate.minute;
final int second = myDate.second;
print('hour: $hour');
print('minute: $minute');
print('second: $second');
 

Результат:

 hour: 18
minute: 16
second: 47
 

Здесь метод синтаксического анализа:

Подстрока, которая должна вам помочь: введите описание ссылки здесь

Регулярное выражение, которое должно вам помочь: введите описание ссылки здесь

Вот пример:

 const String myDate = '2021-09-05T18:16:47.790601 02:00';
final String hour = myDate.substring(11, 13);
final String minute = myDate.substring(14, 16);
final String second = myDate.substring(17, 19);
final String date = RegExp(r"[0-9]{2}:[0-9]{2}:[0-9]{2}").stringMatch(myDate).toString();
final List<String> splitDate = date.split(':');
print('hour: $hour');
print('minute: $minute');
print('second: $second');
print('date: $date');
print('split date: $splitDate');
 

Результат:

 hour: 18
minute: 16
second: 47
date: 18:16:47
split date: [18, 16, 47]
 

Комментарии:

1. Большое спасибо. Я понял, что такое Unix. И он все делал с его помощью.

Ответ №2:

Для строки ISO8601 вы можете конвертировать с помощью даты и времени

   DateTime dt = DateTime.parse('2020-01-02 03:04:05');
 

тогда вы сможете получить доступ к тому, что хотите, с помощью dt