将字符串转换为秒

时间:2014-02-17 06:44:38

标签: java

如果我的小时时间大于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'。

3 个答案:

答案 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");
}
}