我需要在Java中将分钟转换为小时和分钟。例如260应该是4:20。任何人都可以帮助我如何进行转换。
我需要在Java中将分钟转换为小时和分钟。例如260应该是4:20。任何人都可以帮助我如何进行转换。
Answers:
如果您的时间在一个名为 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
Durationjava.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方法构建自己的String 。或参阅此答案以了解使用正则表达式操作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-额外项目与其他类扩展java.time。该项目为将来可能在java.time中添加内容打下了基础。你可能在这里找到一些有用的类,比如Interval,YearWeek,YearQuarter,和更多。
Duration::to…Part我编辑中显示的方法带到了此答案中。您可以轻松地从这些部分组装自己的琴弦。
您也可以使用TimeUnit类。您可以定义
私有静态最终String 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();
试试这个代码:
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。
希望对您有所帮助。
我在项目中使用此功能:
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;
}
这里是我的一个转换功能second,millisecond以day,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
希望对你有帮助
Minutes mod 60将提供数小时的剩余时间。
使用以下代码计算分钟数:
long difference = new Date().getTime() - user.getUpdatedDate().getTime();
int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(difference);
int mHours = t / 60; //since both are ints, you get an int
int mMinutes = t % 60;
System.out.printf("%d:%02d", "" +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);
}
}