想将一段字符串中的日期提取出来,按格式“yyyy-MM-dd”打印出来
代码如下
public class Test1
{
public static void main(String[] args) throws ParseException
{
String s = "6 20 0 0 8 4 0 8 4 3a 79 24 d6 4e 3  time =  Tue Aug 13 10:40:29 CST 2012";
String[] a = s.split("time =  ");
for (String as :a) System.out.println(as);

String da = a[1];
System.out.println(a[1]);

Date daw = new Date(da); 
System.out.println(daw);
SimpleDateFormat ss = new SimpleDateFormat("yyyy-MM-dd");
String aa = ss.format(daw);
System.out.println(aa);
}
}运行的结果
6 20 0 0 8 4 0 8 4 3a 79 24 d6 4e 3  
Tue Aug 13 10:40:29 CST 2012
Tue Aug 13 10:40:29 CST 2012
Tue Aug 14 00:40:29 CST 2012
2012-08-14
为什么获取的时间是错误的呢?Javadatesimpledateformat字符串截取

解决方案 »

  1.   

     Date daw = new Date(da);这种写法是deprecated , 看了一下这个写法如果你的字符串中包含时区信息的话就用这个时区,没有时区的话用default zone
    应该是时区的问题
    换成SimpleDateFormat
      

  2.   

    public class Test1
    {
        public static void main(String[] args) throws ParseException
        {
            String s = "6 20 0 0 8 4 0 8 4 3a 79 24 d6 4e 3  time =  Tue Aug 13 10:40:29 CST 2012";
            String[] a = s.split("time =  ");
            for (String as :a) System.out.println(as);
                     
            String da = a[1];
            //System.out.println(a[1]);
             
           // Date daw = new Date(da); 
            //System.out.println(daw);
            DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy",Locale.US);
            Date date = df.parse(da);
            System.out.println(date);
            SimpleDateFormat ss = new SimpleDateFormat("yyyy-MM-dd");
            String aa = ss.format(date);   
            System.out.println(aa);   
        }
    }