Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将二次相减转换为长_Java_Time_Long Integer - Fatal编程技术网

Java 如何将二次相减转换为长

Java 如何将二次相减转换为长,java,time,long-integer,Java,Time,Long Integer,可能重复: 如何通过将它们转换为long并将其转换回time来减去2次 我试着通过将它们转换为long来减去两次 Long timeSpan = Long.valueOf(timespan.getValue().toString()) * 60; Long checkVar = (date.getTime() - testStartTime.getTime()) / 1000; 现在我如何将结果long转换为时间 也就是说,如果结果是30分钟,我希望它显示为00:30:00

可能重复:

如何通过将它们转换为long并将其转换回time来减去2次

我试着通过将它们转换为long来减去两次

    Long timeSpan = Long.valueOf(timespan.getValue().toString()) * 60;
    Long checkVar = (date.getTime() - testStartTime.getTime()) / 1000;
现在我如何将结果long转换为时间

也就是说,如果结果是30分钟,我希望它显示为00:30:00

我该怎么做


提前感谢

将时间(以秒为单位)转换为单独的HH:MM:SS组件非常简单:

int h = checkVar / 3600;
int m = (checkVar / 60) % 60;
int s = (checkVar % 60);

String time = String.format("%02d:%02d:%02d", h, m, s);

将时间(以秒为单位)转换为单个HH:MM:SS组件非常简单:

int h = checkVar / 3600;
int m = (checkVar / 60) % 60;
int s = (checkVar % 60);

String time = String.format("%02d:%02d:%02d", h, m, s);

正如已经提出的,看一看


正如已经提出的,看一看


你考虑过使用类似的库吗?@BjörnPollex这不是那个问题的重复-所需的输出格式完全不同。@Alnitak:正确,我在那里太热情了。你考虑过使用这样的库吗?@BjörnPollex这不是那个问题的重复-所需的输出格式完全不同。@Alnitak:对,我在那里太热情了。你确定这不会被时区搞混吗?实际上,根据J2SE 7.0文档,这似乎不是对SimpleDateFormat.format的合法调用。为什么说它不是合法调用?+1您可以将时区设置为GMT。@AlexB,因为该函数的原型是StringBuffer formatDate date,StringBuffer toAppendTo,FieldPosition位置。这真的不是一个好主意。类java.util.Date只适合存储时间中的实例,而不适合存储时间量,例如30分钟。像这样误用上课日期可能会导致意外的结果。你确定这不会被时区搞混吗?实际上,根据J2SE 7.0文档,这似乎不是对SimpleDateFormat.format的合法调用。为什么说它不是合法调用?+1您可以将时区设置为GMT。@AlexB,因为该函数的原型是StringBuffer formatDate date,StringBuffer toAppendTo,FieldPosition位置。这真的不是一个好主意。类java.util.Date只适合存储时间中的实例,而不适合存储时间量,例如30分钟。像这样误用课堂日期可能会导致意外的结果。
PeriodFormatter timeFormatter = new PeriodFormatterBuilder().printZeroAlways().
                appendHours().appendSeparator(":").
                appendMinutes().appendSeparator(":").
                appendSeconds().toFormatter();

DateTime startTime = new DateTime(1972, 3, 8, 15, 30);
DateTime endTime = new DateTime();

Period period = new Period(startTime, endTime);
int days = period.getDays();
int months = period.getMonths();
int years = period.getYears();

System.out.println(period.toString(timeFormatter));