Разбор времени с помощью AM/PM из строки — обычная задача во многих приложениях Flutter. В этой статье мы рассмотрим несколько способов добиться этого во Flutter с использованием языка программирования Dart. Мы предоставим примеры кода вместе с пошаговыми объяснениями для каждого метода. Давайте начнем!
Метод 1: регулярное выражение (RegExp)
String parseTimeUsingRegExp(String timeString) {
RegExp regExp = RegExp(r'(\d{1,2}):(\d{2})\s?([AaPp][Mm])');
Match match = regExp.firstMatch(timeString);
if (match != null) {
int hour = int.parse(match.group(1));
int minute = int.parse(match.group(2));
String period = match.group(3).toUpperCase();
if (period == 'PM' && hour != 12) {
hour += 12;
}
return '$hour:$minute';
}
return null;
}
Метод 2: DateFormat из пакета intl
import 'package:intl/intl.dart';
String parseTimeUsingDateFormat(String timeString) {
DateFormat format = DateFormat.jm();
DateTime dateTime = format.parse(timeString);
return DateFormat.Hm().format(dateTime);
}
Метод 3: разделение строки
String parseTimeUsingSplit(String timeString) {
List<String> parts = timeString.split(RegExp(r'[^0-9a-zA-Z]'));
int hour = int.parse(parts[0]);
int minute = int.parse(parts[1]);
String period = parts[2].toUpperCase();
if (period == 'PM' && hour != 12) {
hour += 12;
}
return '$hour:$minute';
}
Метод 4. Использование пакета intl с пакетами DateFormat и date_format
import 'package:intl/intl.dart';
import 'package:date_format/date_format.dart';
String parseTimeUsingIntlAndDateFormat(String timeString) {
DateFormat format = DateFormat.jm();
DateTime dateTime = format.parse(timeString);
return formatDate(dateTime, [HH, ':', nn]);
}
Метод 5: использование пакета intl с пакетом DateFormat и intl_utils
import 'package:intl/intl.dart';
import 'package:intl_utils/intl_utils.dart';
String parseTimeUsingIntlAndIntlUtils(String timeString) {
DateFormat format = DateFormat.jm();
DateTime dateTime = format.parse(timeString);
return IntlUtils.format24Hour(dateTime);
}
В этой статье мы рассмотрели несколько методов анализа времени с помощью AM/PM из строки во Flutter. Мы рассмотрели различные подходы, включая регулярные выражения, класс DateFormat
из пакета intl
и разделение строки. В зависимости от ваших конкретных требований и предпочтений вы можете выбрать метод, который наилучшим образом соответствует вашим потребностям. Не стесняйтесь экспериментировать с этими методами и адаптировать их к своим собственным проектам Flutter. Приятного кодирования!