繁体   English   中英

如何在Java中将字符串中的时间转换为整数?

[英]How to convert time in a string to an integer in Java?

我从亚马逊那里得到了这样的时间值的JSON响应:

"Duration": 
{
    "name": "Duration",
    "value": "PT7H"
} 

持续7个小时。 如果输入为5分钟,则将如下所示:

"Duration": 
{
    "name": "Duration",
    "value": "PT5M"
}

如何将PT5M转换为以秒为单位的时间? 因此,如果字符串是“ PT5M”(300秒),那么我希望它是300作为输出。

谢谢!

这些持续时间采用标准ISO 8601格式 您可以使用Java 8日期和时间API 使用Duration类的parse方法。 然后转换为其他计时单位。 (故意不提供代码,因此您可以学习如何执行此操作。)

Java 8 Duration类

我认为这就是您想要的。 只需使用解析方法。 它采用与您得到的格式相同的格式。 解析Json可以使用Jackson。

我可以像这样解析函数:

public static void main(String[] args)
 throws IOException, ParseException {

 String corvertme = "PT7H5M";

 Date extractedDate  = parseAmazonDate(corvertme);

 System.out.println(extractedDate);


 Calendar c = Calendar.getInstance();
 c.setTime(extractedDate);
 long daySeconds = (c.get(Calendar.SECOND) +
                    c.get(Calendar.MINUTE) * 60 +
                    c.get(Calendar.HOUR) * 3600);
 System.out.println(daySeconds);

 }

  private static Date parseAmazonDate(String corvertme) throws ParseException {

char[] hourCharacters = corvertme.replaceAll("[PT]", "").toCharArray();

 String[] hourArray =  "00:00:00".split(":");

 int HOUR_INDEX=0;
 int MIN_INDEX=1;
 int SEG_INDEX=2;

 char timeValue = 0;
 char posValue =  0;

 for(int i = 0; i < hourCharacters.length; i++){
     timeValue = hourCharacters[i];
     if(hourCharacters.length > i + 1){
         posValue = hourCharacters[++i];
     }

      switch (posValue) {
        case 'H':
                hourArray[HOUR_INDEX] = String.valueOf(timeValue);
                break;
        case 'M':
               hourArray[MIN_INDEX] = String.valueOf(timeValue);
                break;
        case 'S':
                hourArray[SEG_INDEX] = String.valueOf(timeValue);
        default:
            break;
        }   

 }


 String stringDate = hourArray[HOUR_INDEX] + ":"+hourArray[MIN_INDEX] + ":" + hourArray[SEG_INDEX];

 return new SimpleDateFormat("HH:mm:ss").parse(stringDate);

}

希望对您有帮助!

此问题类似于“ 解析ISO日期”

只需找出M,H和S的最后一个索引。找到分钟的值。 通过将字符串解析为int来表示小时和秒。 然后计算时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM