Date now = new Date(new Date().toString());
System.out.println("现在是"+now.toString());
这个结果显示明显不对,出什么问题?

解决方案 »

  1.   

    public Date(String s)已过时。 从 JDK 1.1 开始,由 DateFormat.parse(String s) 取代。 分配 Date 对象并初始化此对象,以表示字符串 s 指出的日期和时间,就像通过 parse(java.lang.String) 方法解释一样。 参数:
    s - 日期的字符串表示形式。
    另请参见:
    DateFormat, parse(java.lang.String)
      

  2.   

    Date(String string)这个函数都duplicate了,为什么还用它了,可以考虑使用Calendar和SimpleDateFormat
      

  3.   

    Data过时了,不推荐使用,api上时推荐用Calender,根据需要使用Calendar和SimpleDateFormat都行
      

  4.   

    Format format = new SimpleDateFormat("yyyy-MM-dd");
    System.out.print(format.format(new Date()));
      

  5.   

    new SimpleDateFormat("yyyy-MM-dd").format(new Date())
      

  6.   

    new Date().toLocaleString() //虽然过时了不过还是挺好用的如果要格式化就用
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            String formatDateStr = format.format(new Date());//2010-03-12
      

  7.   

    Date now=new Date();
    System.out.println(now.toString());//Fri Mar 12 14:05:48 CST 2010

    Date snow=new Date(new Date().toString());
    System.out.println(snow.toString());//Sat Mar 13 04:05:48 CST 2010这两个结果相差了14个小时分析原因:
    public Date(String s)已过时。从 JDK 1.1 开始,就像通过 parse(java.lang.String) 方法解释一样。
    public static long parse(String s)
    先把字符串 s 解释为日期和时间的表示形式。如果尝试成功,则返回指示的时间,如果尝试失败,则抛出 IllegalArgumentException。它接受许多语法;
    特别是它识别 IETF 标准日期语法:"Fri, 12 Mar 2010 13:47:17 GMT";格林威治时间
    如果使用时区偏移量:"Fri, 12 Mar 2010 13:47:17 GMT+08";北京时间
    如果没有指定时区,则假定用本地时区。而new Date().toString()的结果是"Fri Mar 12 13:47:24 CST 2010",那么在解析的时候,连续的字母序列被认为是单词,并按以下方法进行处理:(1)忽略匹配 AM(上午)(忽略大小写)的单词(但如果小时尚未识别,或者小时小于 1 或大于 12,则分析失败)。 
    (2)匹配 PM(下午)(忽略大小写)的单词,添加 12 到小时(但如果小时尚未识别,或者小时小于 1 或大于 12,则分析失败)。 
    (3)忽略匹配 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 或 SATURDAY 的任何前缀(忽略大小写)的任何单词。例如,sat、Friday、TUE 和 Thurs 会被忽略。 
    (4)否则,匹配 JANUARY、FEBRUARY、MARCH、APRIL、MAY、JUNE、JULY、AUGUST、SEPTEMBER、OCTOBER、NOVEMBER 或 DECEMBER 的任何前缀(忽略大小写,并按这里给出的顺序考虑它们)的任何单词都被识别为指定月份,并被转换成一个数字(0 至 11)。例如,aug、Sept、april 和 NOV 被识别为月份。Ma 也是这样,它被识别为 MARCH,而不是 MAY。 
    (5)匹配 GMT、UT 或 UTC(忽略大小写)的任何单词都认为是指 UTC。 
    (6)匹配 EST、CST、MST 或 PST(忽略大小写)的任何单词都被认为是指北美的时区,该时区分别比格林威治时间晚 5、6、7 或 8 小时。匹配 EDT、CDT、MDT 或 PDT(忽略大小写)的任何单词都被识别为在夏令时期间分别指相同的时区。因此,在本例中因为匹配CST,则认为该字符串的时区为北美的时区,那么这个字符串的时间被当成了北美的现在时间,
    然后new Date(s),把该字符串所表示的时间,按照本地时区,即北京时间表示出来,这样就相差了14个小时