2016-09-23 168 views
0

我们怎样可以删除与字符串只保存日期:从列表中删除特定的单词/字符串

For ex: String outPut = {Time = 0:0:0} {Timestamp = Tue Oct 20 23:54:10 BST 2013} 

我想只有日期

For ex: Tue Oct 20 2013 

到目前为止,我已经尝试采用以下方法:

String[] manipulateDate = output.getDate().split("\\{"); 
     for(String s : manipulateDate){ 
      String outputDate = manipulateDate [2].replaceAll("\\}", "").replaceAll("\\s*\\bTimestamp =\\b\\s*",""); 
       System.out.println(outputDate); 
     } 

什么是实现和使用Java日期/字符串的最佳方式?

+0

不清楚你输入的是什么。请阅读[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 – Andreas

回答

0

要严格回答你的问题,你可以这样做:

String date = output.replaceAll(".*Timestamp = (.*)? \\d{2}:.*?(\\d{4}).*", "$1 $2"); 

但它可能是最好解析整个字符串作为日期对象:

String output = "{Time = 0:0:0} {Timestamp = Sun Oct 20 23:54:10 BST 2013}"; 
String timestamp = output.replaceAll("\\{.*?\\} \\{Timestamp = (.*)\\}", "$1"); //Sun Oct 20 23:54:10 BST 2013 
ZonedDateTime dateTime = ZonedDateTime.parse(timestamp, DateTimeFormatter.ofPattern("E MMM dd HH:mm:ss z yyyy", Locale.ENGLISH)); 

从这一点上,你可以用日期对象做你想做的事情,包括把它打印成字符串。请注意,我将原始字符串更改为星期日(与您的问题中的星期二相比):将其解析为日期也引发了2013年10月20日不是星期四的事实,这是字符串的另一个优点。

+0

谢谢!如果我们不想使用ZonedDateTime,该怎么办?我们可以得到普通的日期为例如:2014-01-01 – user2501165

+0

当然:'dateTime.toLocalDate()' – assylias