long d1Ms=asa.getTime();
long d2Ms=asa2.getTime();
long minute = Math.abs((d1Ms-d2Ms)/60000);
int Hours = (int)minute/60;
int Minutes = (int)minute%60;
stUr.setText(Hours+":"+Minutes);
(В 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)
}
Duration.ofMinutes( 260L )
.toString()
PT4H20M
blockquote>... или ...
LocalTime.MIN.plus( Duration.ofMinutes( 260L ) ).toString()
04:20
blockquote>
Duration
Классы java.time включают пару классов для представления промежутков времени. Класс
Duration
находится в часах-минутах-секундах, аPeriod
- годами-месяцами.Duration d = Duration.ofMinutes( 260L );
ISO 8601
Стандарт ISO 8601 определяет текстовые форматы для значений даты и времени. Для промежутков времени, не привязанных к временной шкале, стандартный формат -
PnYnMnDTnHnMnS
.P
отмечает начало, аT
отделяет годы-месяц-дни от часов-минут-секунд. Итак, полтора часаPT1H30M
.В классах java.time по умолчанию используются форматы ISO 8601 для разбора и генерации строк. Классы
Duration
иPeriod
используют этот конкретный стандартный формат. Поэтому просто назовитеtoString
.String output = d.toString();
PT4H20M
blockquote>Для альтернативного форматирования создайте собственную строку в Java 9 и более поздней версии ( not в 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
blockquote>
О java.time
Рамка java.time встроена в Java 8 и более поздних версий. Эти классы вытесняют неприятные старые классы времени legacy , такие как
java.util.Date
,Calendar
и & amp;SimpleDateFormat
.Проект Joda-Time , теперь в режиме обслуживания , советует перейти на java.time .
Чтобы узнать больше, см. учебное пособие Oracle . И поиск Stack Overflow для многих примеров и объяснений. Спецификация JSR 310 .
Где получить классы java.time?
- Java SE 8 и SE 9 и более поздние версии. Часть стандартного Java API с интегрированной реализацией. Java 9 добавляет некоторые незначительные функции и исправления.
- Java SE 6 и SE 7 Большая часть функциональных возможностей java.time обратно переносится на Java 6 & amp; 7 в ThreeTen-Backport .
- Android Проект ThreeTenABP адаптирует ThreeTen-Backport (упомянутый выше) специально для Android. См. Как использовать ThreeTenABP ... .
Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как
Interval
,YearWeek
,YearQuarter
и more .
вы забыли слово в своем ответе:
int hours = Math.floor(t / 60);
int minutes = t % 60;
System.out.printf("%d:%02d", hours, minutes);
без него, ваш результат будет ложным в случае certains, например, например:
t = 525
hours = 8.75
, поэтому без Math. у нас есть этот результат: 9h45 вместо 8h45.
В Swift
func timeStringFrom(minutes:Double) -> String {
return "\(Int(minutes/60)):\(Int(minutes) % 60)"
}
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);
}
}
int mHours = t / 60; //since both are ints, you get an int
int mMinutes = t % 60;
System.out.printf("%d:%02d", "" +mHours, "" +mMinutes);
Данный ввод в секундах можно преобразовать в формат 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.
Надеюсь, это поможет.
Это можно сделать так
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();
Используйте 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();
}
вычислять минуты, используя этот код:
long difference = new Date().getTime() - user.getUpdatedDate().getTime();
int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(difference);
Минуты mod 60 будут давать часы с оставшимися минутами.
Я использую эту функцию для своих проектов:
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;
}
Попробуйте этот код:
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");
}
}
Вы также можете использовать класс TimeUnit . Вы можете определить, что
private static final String FORMAT = "%02d:%02d:%02d";может иметь такой метод, как:
public static String parseTime(long milliseconds) { return String.format(FORMAT, TimeUnit.MILLISECONDS.toHours(milliseconds), TimeUnit.MILLISECONDS.toMinutes(milliseconds) - TimeUnit.HOURS.toMinutes( TimeUnit.MILLISECONDS.toHours(milliseconds)), TimeUnit.MILLISECONDS.toSeconds(milliseconds) - TimeUnit.MINUTES.toSeconds( TimeUnit.MILLISECONDS.toMinutes(milliseconds))); }