Re: [問題] DateFormat.format 與 FieldPosition

看板java作者 (偶爾想擺爛一下)時間16年前 (2010/02/02 17:29), 編輯推噓1(103)
留言4則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《kikiapple (KiKi蘋果)》之銘言: : DateFormat.format 可以指定 FieldPosition 來取得產生字串中特定欄位的位置。 : 例如 : FieldPosition fp = new FieldPosition(Field.DAY_OF_MONTH); : DateFormat.format(date, buffer, fp); : 這時 fp.beginIndex 與 fp.endIndex 就會存放產生字串中 天 的所在位置。 : 但是這個 FieldPosition 一次只能指定一個。 : 如果我想要取得 年 月 日 三個欄位的位置,就得寫成 : FieldPosition fp1 = new FieldPosition(Field.YEAR); : FieldPosition fp2 = new FieldPosition(Field.MONTH); : FieldPosition fp3 = new FieldPosition(Field.DAY_OF_MONTH); : DateFormat.format(date, buffer, fp1); : DateFormat.format(date, new StringBuffer(), fp2); : DateFormat.format(date, new StringBuffer(), fp3); : 數據是有了,但日期字串被 format 三次,不太經濟,感覺也很怪。 : 有比較合理的其他寫法嗎? 要取 formatted string 的多個欄位,應使用 formatToCharacterIterator method。 http://java.sun.com/javase/6/docs/api/java/text/Format.html#formatToCharacterIterator(java.lang.Object) 另外,既然你不要整個 format 之後的字串,其實你可以考慮使用 java.text.SimpleDateFormat 做出你要的格式,而不是 format 出一個很長的 字串然後去擷取幾個片段再來組合成你想要的格式。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.131.138

02/02 19:22, , 1F
謝謝,研究中。
02/02 19:22, 1F

02/02 19:24, , 2F
我是要讓使用者可以指定DateFormat,然後我要根據給定的
02/02 19:24, 2F

02/02 19:25, , 3F
DateFormat生成日期字串,並標記年月日的字串位置。
02/02 19:25, 3F

02/02 19:29, , 4F
標出年月日位置後要做一些效果例如反白之類的
02/02 19:29, 4F
文章代碼(AID): #1BP_24c4 (java)
文章代碼(AID): #1BP_24c4 (java)