[英]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方法。 然后转换为其他计时单位。 (故意不提供代码,因此您可以学习如何执行此操作。)
我认为这就是您想要的。 只需使用解析方法。 它采用与您得到的格式相同的格式。 解析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.