将分钟(双倍)转换为默认时间hh:mm:ss
的最简单快捷的方法是什么?例如我在python中使用了这段代码并且它正在工作
时间= timedelta(分钟= 250.0) 打印时间
结果: 4时10分零零秒
有一个java库或一个简单的代码可以做到吗?
答案 0 :(得分:0)
编辑:要将秒显示为SS,您可以制作一个简单的自定义格式化变量以传递给String.format()
方法
编辑:添加逻辑以添加一分钟并重新计算seconds
如果初始值为小数点后大于59的数字值。
编辑:注意到双倍数学时的精度损失(使用双打的快乐!)seconds
,所以每次都不会是正确的值。更改了代码以正确计算和舍入它。还添加了逻辑来处理由于从秒开始级联而导致分钟和小时溢出的情况。
试试这个(不需要外部库)
public static void main(String[] args) {
final double t = 1304.00d;
if (t > 1440.00d) //possible loss of precision again
return;
int hours = (int)t / 60;
int minutes = (int)t % 60;
BigDecimal secondsPrecision = new BigDecimal((t - Math.floor(t)) * 100).setScale(2, RoundingMode.HALF_UP);
int seconds = secondsPrecision.intValue();
boolean nextDay = false;
if (seconds > 59) {
minutes++; //increment minutes by one
seconds = seconds - 60; //recalculate seconds
}
if (minutes > 59) {
hours++;
minutes = minutes - 60;
}
//next day
if (hours > 23) {
hours = hours - 24;
nextDay = true;
}
//if seconds >=10 use the same format as before else pad one zero before the seconds
final String myFormat = seconds >= 10 ? "%d:%02d:%d" : "%d:%02d:0%d";
final String time = String.format(myFormat, hours, minutes, seconds);
System.out.print(time);
System.out.println(" " + (nextDay ? "The next day" : "Current day"));
}
当然这可以继续下去,扩展这个算法来概括它。到目前为止它一直工作到第二天但没有进一步,所以我们可以将初始的两倍限制为该值。
if (t > 1440.00d)
return;
答案 1 :(得分:0)
使用Joda,您可以执行以下操作:
import org.joda.time.Period;
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;
final Period a = Period.seconds(25635);
final PeriodFormatter hoursMinutes = new PeriodFormatterBuilder().appendHours().appendSuffix(" hour", " hours")
.appendSeparator(" and ").appendMinutes().appendSuffix(" minute", " minutes").appendSeparator(" and ")
.appendSeconds().appendSuffix(" second", " seconds").toFormatter();
System.out.println(hoursMinutes.print(a.normalizedStandard()));
答案 2 :(得分:0)
//Accept minutes from user and return time in HH:MM:SS format
private String convertTime(long time)
{
String finalTime = "";
long hour = (time%(24*60)) / 60;
long minutes = (time%(24*60)) % 60;
long seconds = time / (24*3600);
finalTime = String.format("%02d:%02d:%02d",
TimeUnit.HOURS.toHours(hour) ,
TimeUnit.MINUTES.toMinutes(minutes),
TimeUnit.SECONDS.toSeconds(seconds));
return finalTime;
}