2015-01-06 47 views
0
Calendar firstTime =Calendar.getInstance(); 

java.sql.Timestamp t1=new Timestamp(firstTime.getTime().getTime()); 

這是給當前時間這樣時間戳彭定康

`2015-01-06 17:19:20.763` 

但我想戳圖案像下面

'06-DEC-15 17:19:20.763000000 PM' 

什麼我,如果我想打印時間戳模式這樣

有人可以幫我請

+0

你們倆都想要一個24小時的AM/PM標記嗎? – wassgren

+0

是的,我想要24小時和上午/下午標記 – mqsuresh

+0

是否要打印它或將其存儲在數據庫中?如果首先看[這裏](http://stackoverflow.com/questions/1156468/how-to-format-a-java-sql-timestamp-for-displaying) – Jens

回答

3

可以使用的SimpleDateFormat:

 Calendar firstTime = Calendar.getInstance(); 
     SimpleDateFormat df = new SimpleDateFormat(); 
     df.applyPattern("dd-MMM-yy HH:mm:ss.SSS000000 aa"); 

     System.out.println(df.format(firstTime.getTimeInMillis()).toUpperCase()); 

我已經SSS之後把「0」,因爲你的時間以毫秒爲單位,並沒有任何意義,有三個以上的「S」秒,但這就是要求。

toUpperCase是另一個要求(「Jan」不夠)。

+0

@mqsuresh「dd-MMM-yy hh:mm:ss.SSS aa」正是你想要的模式。 – panagdu

+1

謝謝,這是非常好的它給像06-Jan-15 05:34:28.000000846 PM ,,,但我需要像06-Jan-15 05:34:28.846000000PM – mqsuresh

+0

@demostene不完全 - 'MMM'將不會提供大寫輸出(如示例中所示)並且與語言環境相關(例如,此模式爲我的語言環境和1月提供「sty」)。原始輸出包含24H格式,而不是12H(因此您需要'HH'而不是'hh')。 – Cromax

1

如果您強烈堅持特定的輸出格式(1:1),則應額外使用DateFormatSymbols

final DateFormatSymbols dfs = new DateFormatSymbols(); 
    dfs.setShortMonths(new String[]{ 
     "JAN", "FEB", "MAR", "APR", "MAY", "JUN", 
     "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"}); 
    final DateFormat df = new SimpleDateFormat("dd-MMM-yy HH:mm:ss.SSS000000 a", dfs); 
    System.out.println(df.format(new Timestamp(System.currentTimeMillis()))); 

而且請記住,DateFormat線程安全的。

+0

@mqsuresh仍然這一個打印06-JAN-15 12:47:52.000000637 PM而不是06-JAN-15 12:47:52.637000000 PM。看看我的解決方案。 – panagdu

+0

@demostene你說得對 - 你需要那些零,你實際上毫無意義,因爲** MILI **秒(1/1000秒)沒有更精確的3位數。除非你使用'System.nanoTime',否則'Timestamp'不能獲得更高的精度。至於你的解決方案:'toUpperCase'是不夠的,因爲它會在許多不同的語言環境中崩潰。 – Cromax

+0

我還沒有看到任何區域設置要求。 – panagdu