import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;public class DateTest {
public static void main(String args[]){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String str = sdf.format(date);
Date date2 = sdf.parse(str, new ParsePosition(0));
System.out.println(date2);
}
}据说ParsePosition(args)是解析的位置,但我还是不明白,
0的时候结果为Fri Oct 08 11:05:34 CST 2010
1或者2的时候结果为Wed Oct 08 11:06:17 CST 10,后面的20没了,完后还变成星期三了,具体是怎么解析的?看不明白

解决方案 »

  1.   

    你可以去查查ParsePosition的初始化源码和用法
      

  2.   


    JDK文档中的内容,可以参考参考:

    parse
    public Date parse(String text,
                      ParsePosition pos)解析字符串的文本,生成 Date。 
    此方法试图解析从 pos 给定的索引处开始的文本。如果解析成功,则将 pos 的索引更新为所用最后一个字符后面的索引(不必对直到字符串结尾的所有字符进行解析),并返回解析得到的日期。更新后的 pos 可以用来指示下次调用此方法的起始点。如果发生错误,则不更改 pos 的索引,并将 pos 的错误索引设置为发生错误处的字符索引,并且返回 null。 
    指定者:
    类 DateFormat 中的 parse
    参数:
    text - 应该解析其中一部分的 String。
    pos - 具有以上所述的索引和错误索引信息的 ParsePosition 对象。 
    返回:
    从字符串进行解析的 Date。如果发生错误,则返回 null。 
    抛出: 
    NullPointerException - 如果 text 或 pos 为 null。
    另请参见:
    DateFormat.setLenient(boolean)
      

  3.   

    从String第0个字符位置开始parse,1的话就是从第一个字符位置开始parse吧
      

  4.   


    那是因为  0的时候结果为  Fri Oct 08 11:05:34 CST  , 即 日期为 2011-10-08 11:05:34  那天是 Fri  2010
    1或者2的时候结果为  Wed Oct 08 11:06:17 CST 10, 即 日期为 10-10-08 11:05:34  那天是  Wed , 不信你可以查查看!! 
      

  5.   

    我猜想如下~~
    ("yyyy/MM/dd HH:mm:ss");
    从0位开始是yyyy/MM/dd HH:mm:ss 2010-10-08
    从1位开始是yyy/MM/dd HH:mm:ss 010-10-08
    从2位开始是yy/MM/dd HH:mm:ss 10-10-08
    所以1和2是一样的,这里的010,10,,并不是指2010年,而是0010年