时间戳字符串拆分以获取日期和时间的有效方式

时间:2014-08-01 06:40:07

标签: java regex string split

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

5 个答案:

答案 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。