黑马程序员技术交流社区

标题: 帮忙看看怎么回事?关于时间类的问题 [打印本页]

作者: smile_joe    时间: 2013-4-20 15:12
标题: 帮忙看看怎么回事?关于时间类的问题
本帖最后由 smile_joe 于 2013-4-20 19:20 编辑
  1. import java.text.DateFormat;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;


  5. public class Test2 {

  6.         /**
  7.          * @param args
  8.          * @throws ParseException
  9.          */
  10.         public static void main(String[] args)  {
  11.                 method();
  12.         }

  13.         public static void method()  {

  14.                 String s1 = "2010-10-10";
  15.                 String s2 = "2013/5/6";
  16.                 DateFormat df=new SimpleDateFormat();
  17.                 Date d1 = null;
  18.                 try {
  19.                         d1 = df.parse(s1);
  20.                         System.out.println(d1);
  21.                 } catch (ParseException e) {
  22.                         // TODO Auto-generated catch block
  23.                         
  24.                 }
  25.                 Date d2 = null;
  26.                 try {
  27.                         d2 = df.parse(s2);
  28.                         System.out.println(d2);
  29.                 } catch (ParseException e) {
  30.                         // TODO Auto-generated catch block
  31.                         
  32.                 }
  33.                 long l1=d1.getTime();
  34.                 long l2=d2.getTime();
  35.                 System.out.println((l2-l1)/(24*3600*1000));
  36.         }

  37. }
复制代码
编译通过,运行报错:java.lang包下的空指针异常,38行和14行,请帮忙看看....谢谢
作者: zZZ~~    时间: 2013-4-20 15:54
这是修改后的代码
希望对你有帮助

package test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test2 {
         
        /**
     * @param args
     * @throws ParseException
     */
    public static void main(String[] args)  {
            //Test2 p = new Test2();
            method();
    }

    static void method()  {

            String s1 = "2010-10-10 13:33:33";
            String s2 = "2013-5-6 22:22:22";
            DateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date d1 = null;
            try {
                    d1 = df.parse(s1);
                    System.out.println(d1);
            } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    
            }
            Date d2 = null;
            try {
                    d2 = df.parse(s2);
                    System.out.println(d2);
            } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    
            }
            long l1=d1.getTime();
            long l2=d2.getTime();
            System.out.println((l2-l1)/(24*3600*1000));
    }


}

作者: zZZ~~    时间: 2013-4-20 15:54
运行结果是
Sun Oct 10 13:33:33 CST 2010
Mon May 06 22:22:22 CST 2013
939
作者: 乘鱼飞    时间: 2013-4-20 15:59
本帖最后由 乘鱼飞 于 2013-4-20 16:03 编辑

改成这样:


                import java.text.DateFormat;
                import java.text.ParseException;
                import java.text.SimpleDateFormat;
                import java.util.Date;


                public class TestStudy {
                        public static void main(String[] args) throws Exception{
                                method();
                        }
                                public static void method()  {
                                String s1 = "2010-10-10";
                                String s2 = "2013/5/6";
                              DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
                              DateFormat df2=new SimpleDateFormat("yyyy/MM/dd");
                               Date d1 = null;
                                try {
                                            d1 = df.parse( s1);
                                       
                                        System.out.println(d1.toString());
                                } catch (ParseException e) {
                                       
                                         System.out.println(e.getMessage());
                                }
                             
                              
                                Date d2 = null;
                                try {
                                        d2 = df2.parse(s2);
                                        System.out.println(d2.toString());
                                } catch (ParseException e1) {
                                        System.out.println(e1.getMessage());
                                }
                                long l1=d1.getTime();
                                long l2=d2.getTime();
                                System.out.println((l2-l1)/(24*3600*1000));
                        }
}
输出结果:
Sun Oct 10 00:00:00 CST 2010
Mon May 06 00:00:00 CST 2013
939
   
主要是自定义格式没设定
匹配不了
加上 DateFormat df2=new SimpleDateFormat("yyyy/MM/dd");
就行了
作者: HM汪磊    时间: 2013-4-20 16:27
如无问题,请改为以解决,谢谢:handshake
作者: wanggang    时间: 2013-4-20 16:36
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class Test2 {

        /**
         * @param args
         * @throws ParseException
         */
        public static void main(String[] args)  {
               method();
        }

        /**
         *
         */
        public static void method()  {

                String s1 = "2010-10-10";
                String s2 = "2013/5/6";
               DateFormat df = new SimpleDateFormat("yyyy-mm-dd" );

                Date d1=new Date();
               
                try {   
                        d1 = df.parse(s1);
                        System.out.println(d1);
                } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        
                }
               Date d2=new Date();
                try {   
                       d2 = df.parse(s2);
                        System.out.println(d2);
                } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        
                }
               
                        long l1=d1.getTime();
               long l2=d2.getTime();
                System.out.println((l2-l1)/(24*3600*1000));}
               
        

}
作者: wanggang    时间: 2013-4-20 16:37
不知道是不是你要的结果,你自己看看吧
作者: smile_joe    时间: 2013-4-20 19:33
乘鱼飞 发表于 2013-4-20 15:59
改成这样:

谢谢分析,刚用eclipse真是很难习惯,感觉比小红本难用.悲剧...




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2