我正在尝试删除此字符串的秒数:
10/31/2009 9:46:16 AM
我正在尝试使用以下函数执行此操作:
public static String correctValue4(String str) {
String parts[] = str.split(":");
String fixedStr = parts[0] + ":" + parts[1];
return fixedStr;
}
我认为它会解析它并获得10/31/2009 9然后在最后添加46。但是,我在运行时收到“java.lang.ArrayIndexOutOfBoundsException:1”错误。显然,它没有拿起零件[1]。
有什么想法吗?
额外的业力:我需要将AM / PM追加到字符串的末尾。所以,最后看起来应该是这样的:
10/31/2009 9:46 AM
谢谢,非常感谢您的帮助=)
编辑:
对不起,我应该更具体地说明日期。我正在做的是接受一个制表符分隔的文本文件到应用程序,然后格式化它并将其输出到一个新文件。我需要做的就是根据请求从日期中删除秒并输出;我想我只是让它复杂化了。
蒂姆的答案适用于这种情况!谢谢大家,他们提出了建议!
答案 0 :(得分:6)
我会完全建议不同的方法:将值解析为适当的特定于域的类型(我使用Joda Time中的LocalDateTime
),然后以您想要的格式重新格式化它。这将同时执行验证,因此您不会因为碰巧在其中包含冒号而在系统中传播错误数据。
Joda Time提供解析和格式设施(请参阅DateTimeFormat
和DateTimeFormatter
),因此它应该非常简单。
答案 1 :(得分:4)
为什么不使用SimpleDateFormat?
首先解析日期:
Date d = new SimpleDateFormat("MM/dd/yyyy h:mm:ss a").format(str);
然后格式化日期:
new SimpleDateFormat("MM/dd/yyyy h:mm a").format(d);
答案 2 :(得分:1)
如果空格是下面的下一个字符,你不能只删除后跟两位数的冒号吗?
String resultString = subjectString.replaceAll(":\\d{2}(?= )", "");
答案 3 :(得分:1)
如果String始终具有相同的格式(秒数以2位数结尾,空格为AM或PM),您可以使用每个{substring
方法提取相关部分String
1}}实例
String original = "10/31/2009 9:46:16 AM";
//-6 since we want to remove the : as well
String firstPart = original.substring( 0, original.length() - 6 );
String secondPart = original.substring( original.length() - 3, original.length() );
String result = firstPart + secondPart;