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没了,完后还变成星期三了,具体是怎么解析的?看不明白
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)
那是因为 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 , 不信你可以查查看!!
("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年