在解析之前,请检查日期格式

我解析几documments同场Duration 。 但在型动物的文件,它是在不同的充格式,例如:

"Duration": "00:43" "Duration": "113.046" "Duration": "21.55 s"

我想分析他们都格式"Duration": "113.046"我怎么会在至极格式是任何分析之前检查?

这段代码之前,一些条件,因为这是不适合所有的人:

Long duration; DateFormat sdf = new SimpleDateFormat("hh:mm:ss"); try { Date durationD = sdf.parse(totalDuration); Date zeroSec = sdf.parse("00:00:00"); duration = durationD.getTime() - zeroSec.getTime(); } catch (Exception e) { duration = Long.parseLong(totalDuration); }

提前致谢

--------------解决方案-------------

你可以用正则表达式的帮助下匹配的模式,然后格式化相应。 这里有一个开球的例子:

Map<Pattern, DateFormat> dateFormatPatterns = new HashMap<Pattern, DateFormat>();
dateFormatPatterns.put(Pattern.compile("\\d{1,2}:\\d{2}"), new SimpleDateFormat("H:m"));
dateFormatPatterns.put(Pattern.compile("\\d{1,3}\\.\\d{3}"), new SimpleDateFormat("sS"));
dateFormatPatterns.put(Pattern.compile("\\d{1,2}\\.\\d{2} s"), new SimpleDateFormat("sS 's'"));

String[] strings = { "00:43", "113.046", "21.55 s" };
DateFormat finalFormat = new SimpleDateFormat("HH:mm:ss");

for (String string : strings) {
for (Pattern pattern : dateFormatPatterns.keySet()) {
if (pattern.matcher(string).matches()) {
Date date = dateFormatPatterns.get(pattern).parse(string);
String formattedTime = finalFormat.format(date);
System.out.println(formattedTime);
break;
}
}
}

这产生在这里

0时43分00秒
0点○一分53秒
0点○○分21秒

如果这些都是你的已知输入格式,那么你的输入转换到您的预计日期格式。

只是字符串替换所有:.并删除s

不要忘了剥离的空间了。 顺便说一句,“113.046”似乎有点奇怪日期格式,我 - 如果我是你的话,我会用一些标准的日期和时间格式,并转换不规则的。

我的解决方案,不聪明都:

long DurationFixer(String duration){
long durationLong = 0;

if(duration.contains(":")){
DateFormat sdf = new SimpleDateFormat("mm:ss");
try {
Date durationD = sdf.parse(duration);
Date zeroSec = sdf.parse("00:00:00");
durationLong = durationD.getTime() - zeroSec.getTime();
} catch (Exception e) {
durationLong = (Long.parseLong(duration))/1000;
}
}
else{
String r = "";
if(duration.contains("s")){
for (int i = 0; i < duration.length()-2; i ++) {
if ((duration.charAt(i) == '.'))
break;
else
r += duration.charAt(i);
}
}
durationLong = Long.valueOf(r);
}
return durationLong;
}

如果有人能找到一个更好的解决办法,请告诉我。 谢谢大家!

分类:java的 时间:2012-01-01 人气:0
分享到:

相关文章

  • 帮助需要在Java日期格式 2012-10-24

    我有我的数据库中的数据格式 18-NOV-10 我有相同的格式传递到java.util.Date这样 日期日期=新的java.util.Date(dateformater); 使java.util.Date的结果是这样的18-NOV-10 这可能吗 ?? 我想这种方式 String strDate = "12-NOV-07"; SimpleDateFormat sdfSource = new SimpleDateFormat("dd-MMM-yy"); Date d

  • 使用Java日期格式转换 2013-02-17

    我有一个日期/时间值2010-07-26T11:37:52Z,现在我想在26月- 2010(DD-MON-YYYY)格式的日期,我该怎么办呢? --------------解决方案------------- 构造两个SimpleDateFormat的对象. 首先你解析()从成Date对象中的值,第二用来把Date对象返回到一个字符串,如 try { DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); Da

  • 问题在Java日期格式 2013-09-08

    我有这个代码的问题 public static void main(String[] args) throws IOException, ParseException { String strDate = "2011-01-12 07:50:00"; DateFormat formatter = new SimpleDateFormat("yyyy-mm-dd H:M:S"); Date date = formatter.parse(strDate); System

  • 如何自定义的Java日期格式 2015-01-26

    从Java文档,介质格式是:MEDIUM较长,如1952年1月12日 http://java.sun.com/j2se/1.4.2/docs/api/java/text/DateFormat.html 如何自定义它,使我不显示一年? 和拼写出"扬"到一月? 我需要做的是自己? *后剁下的字符串','*有该月份简称(一月)映射到其长期的名字(1月)的表? 谢谢. --------------解决方案------------- 使用的SimpleDateFormat: // For mon

  • Java的日期格式的JavaScript日期格式 2013-04-10

    我希望能够在Java日期格式字符串,如DD / MM / YYYY(2009年7月6日)转换为JavaScript的日期格式字符串,如DD / MM / YY(2009年7月6日). 有没有人这样做过,或有任何想法,我可能会发现一些代码,已经这样做了? 提前致谢. 编辑: 感谢所有,但现在我认识到我的错误,并可能为什么你们这么多人都在努力理解这个问题的答复; JavaScript没有内置的日期格式的能力. 我使用jQuery UI的日期选择器,我已经设定了日期格式,假设它会在某个时候被调用标准的

  • 想不通为11年9月30日下午2时58分49秒EST的日期格式字符串? 2013-11-01

    11年9月30日下午2时58分49秒EST 究竟是什么在Java日期格式? 像"MM / DD / YY HH:MM:SS ???" --------------解决方案------------- 你google一下? http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html 这个文档的摘录: Date and Time Pattern Result "yyyy.MM.dd G 'at'

  • 日期格式在java中 2012-05-19

    可能重复: 如何seconds_since_the_beginning_of_this_epoch转换为日期格式在Java ..? 您好我在ssboetod有"1304054138". 我想在这个"2011年4月21日上午11时46分00秒IST"的格式来显示它. 我如何在Java代码中做到这一点...? --------------解决方案------------- SimpleDateFormat sdf = new SimpleDateFormat("

  • 日期格式的Java 2精确到毫秒 2012-07-30

    我有一个问题,试图获得的DateFormat库给我一个字符串的日期与2毫秒的地方,而不是通常的3我意识到这是沿着厘秒以上的线路进行格式化,但是据我所知的Java不支持. 下面是一些代码来证明我有这个问题. 我期待它输出到两毫秒,但它输出三种. public class MilliSeconds { private static final String DATE_FORMAT_2MS_Digits = "yyyy-MM-dd'T'HH:mm:ss.SS'Z'"; private sta

  • Java的日期格式模式 2012-10-08

    我发现正确读取字符串此日期一个java日期模式的问题: 2012-01-17T11:53:40+00:00 如果时区是标准(+0000),这个模式会工作: yyyy-MM-dd'T'HH:mm:ssZ 但这种情况并非如此. 小z没有任何匹配. --------------解决方案------------- 在Java 7中,可以使用字母X来表示ISO 8601时区. SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:s

  • 将字符串转换为字符串在Java中的日期格式? 2012-11-02

    我写这封信,我想一个字符串"2011-07-17 8时05分50秒"转换成"7月17日上午08时05分"一个应用程序. 有没有一种直接的方式做到这一点在Java中. 我想在字符串输入和输出. 请让我知道,如果有一种方法可以直接做到这一点. 感谢您的时间和帮助. --------------解决方案------------- 使用SimpleDateFormat , public class Main { public static void main(String[

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.656 (s). 10 q(s)