如果我的小时时间大于24小时,如何将字符串时间转换为秒。我的时间来自表格栏
例如:
列名(延迟):时间(字符串):00:40:00
转换:
new SimpleDateFormat("hh:mm:ss").parse($F{late}).getHours()*3600
+ new SimpleDateFormat("hh:mm:ss").parse($F{late}).getMinutes()*60
+ new SimpleDateFormat("hh:mm:ss").parse($F{late}).getSeconds();
OutPut:2400
以上结果是完美的,但如果我的字段值结果:31:58:00,那么我的上述表达式无效。
输出为:28680
28680是(115080-86400)的剩余部分
但实际输出应为'115080'。
答案 0 :(得分:0)
您必须记住的是,一天只有24小时,所以您的示例值实际上是1天,7小时和58分钟。
现在,你可以简单地打破String
并使用简单的mathamtics来计算时间值......
seconds = (hours * 60 * 60) + (minutes * 60) + seconds;
但是,那里的乐趣在哪里。另一种方法是使用基于零的Calendar
,例如......
String time = "31:58:00";
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
cal.setTimeInMillis(0);
String[] parts = time.split(":");
cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(parts[0]));
cal.set(Calendar.MINUTE, Integer.parseInt(parts[1]));
cal.set(Calendar.SECOND, Integer.parseInt(parts[2]));
long millis = cal.getTimeInMillis();
long seconds = millis / 1000;
System.out.println(seconds);
基本上做同样的事情,但使用Calendar
的自动滚动功能。
甚至可能有一个非常巧妙的技巧可以与JodaTime一起使用
更新了JodaTime示例
PeriodFormatter pf = new PeriodFormatterBuilder().
appendHours().appendSeparator(":").
appendMinutes().appendSeparator(":").
appendSeconds().toFormatter();
Period period = pf.parsePeriod("31:58:00");
System.out.println(period.toStandardSeconds().getSeconds());
答案 1 :(得分:0)
我建议您将其转换为当天的时间(即31:58:00 - 24:00:00)然后计算两者并总结。
答案 2 :(得分:0)
感谢All,这是我回复的java代码
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.concurrent.TimeUnit;
public class TestDate {
public static void main(String[] args) throws ParseException {
String timee="31:58:55";
DateFormat format=new SimpleDateFormat("hh:mm:ss");
// format.parse(timee).getSeconds();
int seconds = format.parse(timee).getHours()*3600+format.parse(timee).getMinutes()*60+format.parse(timee).getSeconds();
String[] parts = timee.split(":");
long millis = TimeUnit.HOURS.toSeconds(Long.parseLong(parts[0]))
+ TimeUnit.MINUTES.toSeconds(Long.parseLong(parts[1])) + Long.parseLong(parts[2]);
System.out.println(millis+" in Seconds");
//System.out.println(seconds + " Converted to Seconds");
long s_hour = TimeUnit.SECONDS.toHours(millis);
long tempSec = millis - (TimeUnit.HOURS.toSeconds(s_hour));
long s_minute = TimeUnit.SECONDS.toMinutes(tempSec) ;
long tempSec1 = tempSec - (TimeUnit.MINUTES.toSeconds(s_minute));
long s_seconds = TimeUnit.SECONDS.toSeconds(tempSec);
System.out.println(s_hour + " in Hours");
System.out.println(tempSec+" Which is a reminder");
System.out.println(s_minute + " in Minutes");
System.out.println(tempSec1+" in Seconds");
}
}