1)使用正则表达式,模式
2)在String类
中使用split函数我尝试使用拆分功能我认为它不是一个好的编码实践。 使用'_'迭代数组分割输入字符串
的字符串
START_READING_20140723_093539.jpg
Description_20140723_093539.jpg
Qunantity_20140723_183539.jpg
END_READING_20140723_093539.jpg
输入格式为:yyyyMMdd_HHmmss
输出格式为:23-07-2014 6:35:39PM
答案 0 :(得分:2)
对于语句中的任何输入字符串,请考虑例如
"START_READING_20140723_093539.jpg".split("\\.|_")
产生
Array("START", "READING", "20140723", "093539", "jpg")
获取第二个和第三个最后一项,然后根据建议应用java.text.SimpleDateFormat
。
答案 1 :(得分:2)
为什么不将joda time用于整个事情?
import joda.time.format.*;
import joda.time.*;
DateTimeFormatter inputFormat = DateTimeFormat.forPattern("yyyyMMdd'_'HHmmss");
LocalDateTime timestamp = inputFormat.parseLocalDateTime(theString);
DateTimeFormatter outputFormat = DateTimeFormat.forPattern("dd'-'MM'-'yyyy' 'hh':'mm':'ssa");
String output = outputFormat.print(timestamp);
如果你正在使用Java 8,你应该使用java.time包。
答案 2 :(得分:1)
import re
pattern=re.compile(r".*?(\d+)_(\d+).jpg")
print pattern.match(x).groups()
这将为您提供日期和时间。然后您可以在python中使用mktime或其他实用程序以您想要的格式获取它。
答案 3 :(得分:1)
您可以尝试这样的事情
String str = "START_READING_20140723_093539.jpg";
Scanner scanner = new Scanner(str.substring(0, str.lastIndexOf('.')));
scanner.useDelimiter("[^\\p{Alnum},\\.-]");
String[] arr=new String[2];
int i=0;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
arr[i]=scanner.next();
i++;
} else {
scanner.next();
}
}
String dateStr=arr[0]+"_"+arr[1];
DateFormat df1=new SimpleDateFormat("yyyyMMdd_HHmmss");
DateFormat df2=new SimpleDateFormat("dd-MM-yyyy HH:mm:ssa");
System.out.println(df2.format(df1.parse(dateStr)));
Out put:
23-07-2014 09:35:39AM
答案 4 :(得分:0)
您可以使用DateFormat将输入解析为java.util.Date或Calendar,并使用您想要的输出格式的第二个DateFormat将其格式化为String。