Format format = new SimpleDateFormat("yyyy-MM-dd"); System.out.print(format.format(new Date()));
new SimpleDateFormat("yyyy-MM-dd").format(new Date())
new Date().toLocaleString() //虽然过时了不过还是挺好用的如果要格式化就用 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String formatDateStr = format.format(new Date());//2010-03-12
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个小时
s - 日期的字符串表示形式。
另请参见:
DateFormat, parse(java.lang.String)
System.out.print(format.format(new Date()));
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String formatDateStr = format.format(new Date());//2010-03-12
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个小时