2014-10-20 88 views
0

由於產生以下時間戳由java.sql.TimestampJava的時間戳正則表達式

2014-10-20 11:17:55.19 

我需要一個「長型」時間戳(不含標點符號),所以可以幫助什麼的正則表達式來刪除這些字符:

'-', ':', ' ', '.' 

所以,我可以得到一個結果,看起來像:

2014102011175519 
+0

要知道,一個[ java.sql.Timestamp](http://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html)解析爲[nanoseconds](https://en.wikipedia.org/wiki /納秒)。因此,其字符串表示形式中的小數秒可能有[多達九位數字](http://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html#toString--)。所以你的結果字符串在不同的值上會有不同的長度。這可能是一些應用程序的問題。 – 2014-10-20 18:08:39

回答

3

空白替換所有\D(非數字):

str = str.replaceAll("\\D", ""); 

或者使用日期格式,因爲java.sql.Timestamp中是一個日期:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS"); 
String str = sdf.format(timestamp); 
+2

另外,在Java 8中,java.sql.Timestamp類具有新方法,例如['toInstant' ](http://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html#toInstant--)轉換爲新的java.time包中的對象。 ['Instant'](http://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)保留'Timestamp'中包含的納秒。 – 2014-10-20 18:18:36

1

使用string.replaceAll函數從輸入字符串中刪除-,:,,.字符。

String s = "2014-10-20 11:17:55.19"; 
System.out.println(s.replaceAll("[-: .]", "")); 

輸出:

2014102011175519 
0

/([^\d])/g

正則表達式中替換功能

replaceAll("[^\d]","") 

或多個不久

replaceAll("\D","") 
+0

''[^ \ d]'與簡單的'\ D'相同。用大寫字母表示的速記字符類別是其小寫字母的負面版本。 (同樣,''[^ \ w]'=='\ W') – funkwurm 2014-10-20 15:30:34

+0

@funkwurm +1 :)謝謝 – nu11p01n73R 2014-10-20 15:33:03