#flutter #dart
#flutter #dart
Вопрос:
Я хочу преобразовать секунды в минуты и секунды в формате HH: SS, но моя логика не дает мне того, что я хочу.
static double toMin (var value){
return (value/60);
}
Я также хочу иметь возможность добавлять остаток к значению минут, потому что иногда мое деление дает мне значение секунд, превышающее 60, что неточно
Комментарии:
1.
minutes = (seconds modulo 3600) / 60
?2. можете ли вы объяснить, как это работает?
3. Вы имеете в виду
mm:ss
?4. @Hamed да, это так
Ответ №1:
Duration
Класс может сделать большую часть работы за вас.
var minutes = Duration(seconds: seconds).inMinutes;
Вы могли бы сгенерировать a String
в mm:ss
формате, выполнив:
String formatDuration(int totalSeconds) {
final duration = Duration(seconds: totalSeconds);
final minutes = duration.inMinutes;
final seconds = totalSeconds % 60;
final minutesString = '$minutes'.padLeft(2, '0');
final secondsString = '$seconds'.padLeft(2, '0');
return '$minutesString:$secondsString';
}
Тем не менее, я не рекомендую использовать mm:ss
формат, поскольку без контекста неясно, означает ли «12:34» 12 минут 34 секунды или 12 часов 34 минуты. Я предлагаю вместо этого использовать 12m34s, что однозначно.
Ответ №2:
Вы могли бы попробовать решение ниже, вот как я это делаю:
String formatHHMMSS(int seconds) {
if (seconds != null amp;amp; seconds != 0) {
int hours = (seconds / 3600).truncate();
seconds = (seconds % 3600).truncate();
int minutes = (seconds / 60).truncate();
String hoursStr = (hours).toString().padLeft(2, '0');
String minutesStr = (minutes).toString().padLeft(2, '0');
String secondsStr = (seconds % 60).toString().padLeft(2, '0');
if (hours == 0) {
return "$minutesStr:$secondsStr";
}
return "$hoursStr:$minutesStr:$secondsStr";
} else {
return "";
}
}
Ответ №3:
вы можете сделать что-то вроде этого:
void main() {
print(toMMSS(100));
}
String toMMSS(int value) =>
'${formatDecimal(value ~/ 60)}:${formatDecimal(value % 60)}';
String formatDecimal(num value) => '$value'.padLeft(2, '0');
или
String toMMSS(int value) =>
'${(value ~/ 60).toString().padLeft(2, '0')}:${(value % 60).toString().padLeft(2, '0')}';
кроме того, вы можете создать extension
int
:
extension DateTimeExtension on int {
String get toMMSS =>
'${(this ~/ 60).toString().padLeft(2, '0')}:${(this % 60).toString().padLeft(2, '0')}';
}
использование:
print(342.toMMSS);
Ответ №4:
static String formatYMDHMSBySeconds(int milliseconds) {
if (milliseconds == null) {
return '';
}
DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(milliseconds);
return DateFormat("yyyy-MM-dd HH:mm:ss").format(dateTime);
}