"HH:MM:SS"中的秒数

Bog*_*lan 7 java string parsing

获取字符串表示中的秒数(如"hh:mm:ss")的最佳方法是什么?

显然Integer.parseInt(s.substring(...))*3600 + Integer.parseInt(s.substring(...))*60 + Integer.parseInt(s.substring(...))有效.

但我不想测试它,并重新发明风暴,我希望有一种方法可以使用DateTimeFormat或标准库中的其他类.

谢谢!

use*_*421 14

基于pakores 解决方案:

    DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
    Date reference = dateFormat.parse("00:00:00");
    Date date = dateFormat.parse(string);
    long seconds = (date.getTime() - reference.getTime()) / 1000L;
Run Code Online (Sandbox Code Playgroud)

reference 用于补偿不同的时区,夏令时没有问题,因为SimpleDateFormat不使用实际日期,它返回Epoc日期(1970年1月1日=无DST).

简化(不多):

    DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
    dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date date = dateFormat.parse("01:00:10");
    long seconds = date.getTime() / 1000L;
Run Code Online (Sandbox Code Playgroud)

但我还是会看看Joda-Time ......