作者sbrhsieh (偶尔想摆烂一下)
看板java
标题Re: [问题] DateFormat.format 与 FieldPosition
时间Tue Feb 2 17:29:37 2010
※ 引述《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
1F:推 kikiapple:谢谢,研究中。 02/02 19:22
2F:→ kikiapple:我是要让使用者可以指定DateFormat,然後我要根据给定的 02/02 19:24
3F:→ kikiapple:DateFormat生成日期字串,并标记年月日的字串位置。 02/02 19:25
4F:→ kikiapple:标出年月日位置後要做一些效果例如反白之类的 02/02 19:29