从字符串中删除时间戳

时间:2016-05-05 20:49:53

标签: java regex string timestamp substring

所以我一直试图从字符串中取出时间戳,文件名更具体。

我尝试制作子字符串,但时间戳的大小是可变的。

例如,有时它是这样的:

2016-05-05 03:45:00.907text.txt

有时也喜欢这样:

2016-05-05 03:45:00.83text.txt

也许正则表达式是答案?

要处理的字符串将始终具有时间戳加文件名。文件名可以以数字或字母开头。

我忘了说它是为了Java。

3 个答案:

答案 0 :(得分:1)

sed将清除时间戳

$ echo "2016-05-05 03:45:00.83text.txt" | 
 sed -r 's/^[0-9]{4}(-[0-9]{2}){2} ([0-9]{2}:){2}[0-9]{2}\.[0-9]{2,3}//'

text.txt

也适用于其他情况,但是如果您的文件名是“7text.txt”,则不会知道区别。

答案 1 :(得分:0)

这将删除前导时间戳:

filename = filename.replaceAll("^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(\\.\\d+)?", "");

但是你无法区分短期"当另一部分以数字开头时,时间戳和另一部分的开始。

这也处理时间戳有整秒(并且没有小数结束)。

答案 2 :(得分:0)

String input = "2016-05-05 03:45:00.907text.txt";
String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d+";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSS");
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);

if(matcher.find()){
    String output  =  matcher.group();

    Date date = formatter.parse(output);
    long time = date.getTime();

    System.out.println(time);
}

您必须使用正则表达式查找日期,然后在适当的日期转换字符串,然后才能获得时间戳。