Мені потрібно перевести хвилини в години і хвилини в Java. Наприклад 260 має бути 4:20. може хто-небудь допомогти мені, як це зробити перетворити його.
Мені потрібно перевести хвилини в години і хвилини в Java. Наприклад 260 має бути 4:20. може хто-небудь допомогти мені, як це зробити перетворити його.
Відповіді:
Якщо ваш час у змінній, що називається t
int hours = t / 60; //since both are ints, you get an int
int minutes = t % 60;
System.out.printf("%d:%02d", hours, minutes);
Легше не могло бути
Duration?
tможе бути <0(негативним), тоді повинен бути другий рядок int minutes = Math.abs(t) % 60;.
Duration.ofMinutes( 260L )
.toString()
PT4H20M
... або ...
LocalTime.MIN.plus(
Duration.ofMinutes( 260L )
).toString()
04:20
DurationКласи java.time включають пару класів, що представляють проміжки часу. DurationКлас на годинник-хвилини-секунди, а Periodдля років- місяців-днів.
Duration d = Duration.ofMinutes( 260L );
Duration частинДоступ до кожної частини програми здійснюється Durationза допомогою дзвінка to…Part. Ці методи були додані в Java 9 та пізніших версіях.
long days = d.toDaysPart() ;
int hours = d.toHoursPart() ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
int nanos = d.toNanosPart() ;
Потім ви можете зібрати свій власний рядок із цих деталей.
Стандарт ISO 8601 визначає текстові формати значень дати та часу. Для проміжків часу, не приєднаних до часової шкали, стандартним форматом є PnYnMnDTnHnMnS. В Pвідзначає початок, і Tроз'єднує року-місяць-дні від годин-хвилини-секунд. Отже, півтори години PT1H30M.
Класи java.time використовують типово формати ISO 8601 для синтаксичного аналізу та генерації рядків. DurationІ Periodкласи використовують цей конкретний стандартний формат. Тож просто телефонуйте toString.
String output = d.toString();
PT4H20M
Для альтернативного форматування створіть свій власний рядок у Java 9 та пізніших версіях ( не в Java 8) за допомогою Duration::to…Partметодів. Або перегляньте цю відповідь щодо використання регулярного виразу для маніпулювання форматованим рядком ISO 8601.
LocalTimeЯ настійно рекомендую використовувати стандартний формат ISO 8601 замість надзвичайно неоднозначного та заплутаного формату годинника 04:20. Але якщо ви наполягаєте, ви можете отримати цей ефект, зламавши LocalTimeклас. Це працює, якщо ваша тривалість не перевищує 24 годин.
LocalTime hackUseOfClockAsDuration = LocalTime.MIN.plus( d );
String output = hackUseOfClockAsDuration.toString();
04:20
Java.time каркас вбудований в Java 8 і пізніших версій. Ці класи витісняти неприємні старі застарілі класи дати і часу , такі як java.util.Date, Calendar, і SimpleDateFormat.
Проект Joda-Time , який зараз перебуває в режимі обслуговування , радить перейти на класи java.time .
Щоб дізнатись більше, див. Підручник Oracle . І шукайте в Stack Overflow багато прикладів та пояснень. Специфікація - JSR 310 .
Де отримати класи java.time?
Проект ThreeTen-Extra розширює java.time додатковими класами. Цей проект є полігоном для можливих майбутніх доповнень до java.time. Ви можете знайти деякі корисні класи тут , такі як Interval, YearWeek, YearQuarter, і більш .
Duration::to…Partметоди, показані мої правки, до цієї відповіді. Ви можете легко зібрати власну струну з цих деталей.
Ви також можете використовувати клас TimeUnit . Ви могли б визначити
приватний статичний фінальний рядок FORMAT = "% 02d:% 02d:% 02d";може мати такий метод, як:
відкритий статичний рядок parseTime (довгі мілісекунди) {
повернути String.format (FORMAT,
TimeUnit.MILLISECONDS.toHours (мілісекунди),
TimeUnit.MILLISECONDS.toMinutes (мілісекунди) - TimeUnit.HOURS.toMinutes (
TimeUnit.MILLISECONDS.toHours (мілісекунди)),
TimeUnit.MILLISECONDS.toSeconds (мілісекунди) - TimeUnit.MINUTES.toSeconds (
TimeUnit.MILLISECONDS.toMinutes (мілісекунди)));
}
Використовуйте java.text.SimpleDateFormatдля перетворення хвилин у години та хвилини
SimpleDateFormat sdf = new SimpleDateFormat("mm");
try {
Date dt = sdf.parse("90");
sdf = new SimpleDateFormat("HH:mm");
System.out.println(sdf.format(dt));
} catch (ParseException e) {
e.printStackTrace();
}
Це можна зробити так
int totalMinutesInt = Integer.valueOf(totalMinutes.toString());
int hours = totalMinutesInt / 60;
int hoursToDisplay = hours;
if (hours > 12) {
hoursToDisplay = hoursToDisplay - 12;
}
int minutesToDisplay = totalMinutesInt - (hours * 60);
String minToDisplay = null;
if(minutesToDisplay == 0 ) minToDisplay = "00";
else if( minutesToDisplay < 10 ) minToDisplay = "0" + minutesToDisplay ;
else minToDisplay = "" + minutesToDisplay ;
String displayValue = hoursToDisplay + ":" + minToDisplay;
if (hours < 12)
displayValue = displayValue + " AM";
else
displayValue = displayValue + " PM";
return displayValue;
} catch (Exception e) {
LOGGER.error("Error while converting currency.");
}
return totalMinutes.toString();
(У Kotlin) Якщо ви збираєтеся помістити відповідь у TextView або щось інше, ви можете замість цього використати рядовий ресурс:
<string name="time">%02d:%02d</string>
А потім ви можете використовувати цей String ресурс, щоб потім встановити текст під час виконання, використовуючи:
private fun setTime(time: Int) {
val hour = time / 60
val min = time % 60
main_time.text = getString(R.string.time, hour, min)
}
Я використовую цю функцію для своїх проектів:
public static String minuteToTime(int minute) {
int hour = minute / 60;
minute %= 60;
String p = "AM";
if (hour >= 12) {
hour %= 12;
p = "PM";
}
if (hour == 0) {
hour = 12;
}
return (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + " " + p;
}
Ось моя функція для перетворення a second, millisecondtoday,hour,minute,second
public static String millisecondToFullTime(long millisecond) {
return timeUnitToFullTime(millisecond, TimeUnit.MILLISECONDS);
}
public static String secondToFullTime(long second) {
return timeUnitToFullTime(second, TimeUnit.SECONDS);
}
public static String timeUnitToFullTime(long time, TimeUnit timeUnit) {
long day = timeUnit.toDays(time);
long hour = timeUnit.toHours(time) % 24;
long minute = timeUnit.toMinutes(time) % 60;
long second = timeUnit.toSeconds(time) % 60;
if (day > 0) {
return String.format("%dday %02d:%02d:%02d", day, hour, minute, second);
} else if (hour > 0) {
return String.format("%d:%02d:%02d", hour, minute, second);
} else if (minute > 0) {
return String.format("%d:%02d", minute, second);
} else {
return String.format("%02d", second);
}
}
Тестування
public static void main(String[] args) {
System.out.println("60 => " + secondToFullTime(60));
System.out.println("101 => " + secondToFullTime(101));
System.out.println("601 => " + secondToFullTime(601));
System.out.println("7601 => " + secondToFullTime(7601));
System.out.println("36001 => " + secondToFullTime(36001));
System.out.println("86401 => " + secondToFullTime(86401));
}
Вихідні дані
60 => 1:00
101 => 1:41
601 => 10:01
7601 => 2:06:41
36001 => 10:00:01
86401 => 1day 00:00:01
Сподіваюся, це допоможе
Хвилини мод 60 буде давати години із залишком хвилин.
Спробуйте цей код:
import java.util.Scanner;
public class BasicElement {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int hours;
System.out.print("Enter the hours to convert:");
hours =input.nextInt();
int d=hours/24;
int m=hours%24;
System.out.println(d+"days"+" "+m+"hours");
}
}
Вказаний вхід за секунди ви можете перетворити у формат hh: mm: ss таким чином:
int hours;
int minutes;
int seconds;
int formatHelper;
int input;
//formatHelper maximum value is 24 hours represented in seconds
formatHelper = input % (24*60*60);
//for example let's say format helper is 7500 seconds
hours = formatHelper/60*60;
minutes = formatHelper/60%60;
seconds = formatHelper%60;
//now operations above will give you result = 2hours : 5 minutes : 0 seconds;
Я використовував formatHelper, оскільки введення може бути більше 86 400 секунд, що становить 24 години.
Якщо вам потрібен загальний час введення, представлений hh: mm: ss, ви можете просто уникнути formatHelper.
Сподіваюся, це допоможе.
inputдорівнює 7500, то результат - 7500 годин, 5 хвилин і 0 секунд, що, очевидно, неправильно. І в запитанні взагалі не йшлося про секунди.
int mHours = t / 60; //since both are ints, you get an int
int mMinutes = t % 60;
System.out.printf("%d:%02d", "" +mHours, "" +mMinutes);
%dдля форматування рядкових значень "" +mHoursі "" +mMinutes?
import java.util.Scanner;
public class Time{
public static void main(String[]args){
int totMins=0;
int hours=0;
int mins=0;
Scanner sc= new Scanner(System.in);
System.out.println("Enter the time in mins: ");
totMins= sc.nextInt();
hours=(int)(totMins/60);
mins =(int)(totMins%60);
System.out.printf("%d:%d",hours,mins);
}
}