Ответ 1
Более короткий путь. (Предполагает время >= 0)
public String timeConvert(int time) {
return time/24/60 + ":" + time/60%24 + ':' + time%60;
}
как конвертировать минуты в дни часов и минут в java (у нас есть неделя здесь, 7 дней)
public String timeConvert(int time){
String t = "";
int h = 00;
int m = 00;
// h= (int) (time / 60);
// m = (int) (time % 60);
// if(h>=24) h=00;
if((time>=0) && (time<=24*60)){
h= (int) (time / 60);
m = (int) (time % 60);
}else if((time>24*60) && (time<=24*60*2)){
h= (int) (time / (1440));
m = (int) (time % (1440));
}else if((time>24*60*2) && (time<=24*60*3)){
h= (int) (time / (2880));
m = (int) (time % (2880));
}else if((time>24*60*3) && (time<=24*60*4)){
h= (int) (time / (2880*2));
m = (int) (time % (2880*2));
}else if((time>24*60*4) && (time<=24*60*5)){
h= (int) (time / (2880*3));
m = (int) (time % (2880*3));
}else if((time>24*60*5) && (time<=24*60*6)){
h= (int) (time / (2880*4));
m = (int) (time % (2880*4));
}else if((time>24*60*6) && (time<=24*60*7)){
h= (int) (time / (2880*5));
m = (int) (time % (2880*5));
}
t =h+":"+m ;
return t;
}
Я пробовал это, но он не работает
спасибо
Более короткий путь. (Предполагает время >= 0)
public String timeConvert(int time) {
return time/24/60 + ":" + time/60%24 + ':' + time%60;
}
Если вы хотите сделать это самостоятельно, идите другим путем.
Если вы используете Java 6, то может быть полезно перечисление TimeUnit. Например:
TimeUnit.HOURS.convert(10, TimeUnit.DAYS)
Этот статический вызов преобразует 10 дней в часовые единицы и возвращает 240. Вы можете играть с единицами времени, начиная с NANOSECONDS и заканчивая DAYS.
Фактически TimeUnit доступен на Java 5, но в версии 6 добавлено еще несколько единиц.
- EDIT-- Теперь, когда я лучше понимаю ваш вопрос, используйте подход разделения и остатка, как в ответ Ромена. Мой совет полезен только для преобразования в единицу времени.
и ответ:
public String timeConvert(int time){
String t = "";
int j = time/(24*60);
int h= (time%(24*60)) / 60;
int m = (time%(24*60)) % 60;
t =j + ":" + h + ":" + m;
return t;
}
что вы думаете об этом коде?
1) Ваш код повторяется. Это признак плохого кода, на мой взгляд.
2) Делитель не должен меняться с количеством дней, потому что количество дней имеет мало общего с количеством минут в час.
Помимо этого, взгляните на подход Ромена Хеппе, он рассказал вам, как это сделать.
1 день 2 часа 5 минут
public static String convertToDaysHoursMinutes(long minutes) {
int day = (int)TimeUnit.MINUTES.toDays(minutes);
long hours = TimeUnit.MINUTES.toHours(minutes) - (day *24);
long minute = TimeUnit.MINUTES.toMinutes(minutes) - (TimeUnit.MINUTES.toHours(minutes)* 60);
String result = "";
if (day != 0){
result += day;
if (day == 1){
result += " day ";
}
else{
result += " days ";
}
}
if (hours != 0){
result += hours;
if (hours == 1){
result += " hr ";
}
else{
result += " hrs ";
}
}
if (minute != 0){
result += minute;
if (minute == 1){
result += " min";
}
else{
result += " mins";
}
}
return result;
}
Я использую этот код. это также может помочь.
private String getText(int minutes){
int weeks = minutes / 10080;
int aboveWeeks = minutes % 10080;
int days = aboveWeeks / 1440;
int aboveDays = aboveWeeks % 1440;
int hours = aboveDays / 60;
int aboveHours = aboveDays % 60;
int minute = aboveHours / 60;
if(weeks > 0 && days > 0) {
if(weeks > 1 && days > 1){
return weeks + " weeks " + days + " days before";
} else {
return weeks + " weeks " + days + " day before";
}
} else if (weeks > 0){
if (weeks > 1){
return weeks + " weeks before";
} else {
return weeks + " week before";
}
} else if(days > 0 && hours > 0){
if(days > 1 && hours > 1){
return days + " days " + hours + " hours before";
} else {
return days + " days " + hours + " hour before";
}
} else if(days > 0){
if (days > 1){
return days + " days before";
} else {
return days + " day before";
}
} else if(hours > 0 && minute > 0){
if(hours > 1 && minute > 1){
return hours + " hours " + minute + " minutes before";
} else {
return hours + " hours " + minute + " minute before";
}
} else if(hours > 0){
if (hours > 1){
return hours + " hours before";
} else {
return hours + " hour before";
}
} else {
if (minutes > 1){
return minutes + " minutes before";
} else {
return minutes + " minute before";
}
}
}
class time{
public static void main (String args[]){
System.out.println("Hello");
int duration=1500;
String testDuration = "";
if(duration < 60){
testDuration = duration + " minutes";
}
else{
if((duration / 60)<24)
{
if((duration%60)==0){
testDuration = (duration / 60) + " hours";
}
else{
testDuration = (duration / 60) + " hours," + (duration%60) + " minutes";
}
}
else{
if((duration%60)==0){
if(((duration/60)%24)==0){
testDuration = ((duration / 24)/60) + " days,";
}
else{
testDuration = ((duration / 24)/60) + " days," + (duration/60)%24 +"hours";
}
}
else{
testDuration = ((duration / 24)/60) + " days," + (duration/60)%24 +"hours"+ (duration%60) + " minutes";
}
}
}
System.out.println(testDuration);
}
}
для лучшей читаемости, как будто он не будет печатать 0 дней или 0 часов или 0 минут. т.е. g- (если минута = 1500, то будет напечатан только 1 день 1 час)
Int минута = 150;
StringBuilder sb=new StringBuilder();
int day=minute/1440;
int rem=minute%1440;
int hour=rem/60;
int Minute=rem%60;
if(day>0)
sb.append(day+" day ");
if(hour>0)
sb.append(hour+" hour ");
if(Minute>0)
sb.append(Minute+" minute");
System.out.println(sb);
очень полезный код для обозначения заданных минут в часах, минутах и днях. Можете ли вы предоставить тот же код с логикой добавленного года, месяцев, недель, дней, часов, минут для ввода, такой же, как минуты?
потому что я также хочу рассчитать месяц год недели.
С уважением
const convertMinutesToDays = (minutes) => {
let hours
let days
let restMinutes
const onedayMinutes = 1440 //24*60
if(minutes < 60){
return '${minutes} Minutes'
}else if(minutes > 60 && minutes < onedayMinutes){
hours = Math.floor(minutes/60)
restMinutes = minutes%60
return '${hours} Hours ${restMinutes} Minutes'
}else{
days = Math.floor((minutes/60)/24)
restMinutes = minutes % onedayMinutes
hours = Math.floor(restMinutes/60)
restMinutes = restMinutes % 60
return '${days} Days ${hours} Hours ${restMinutes} Minutes'
}
}