是否可以获取具有特定格式的java.util.Date对象?

时间:2013-10-06 09:47:12

标签: java date simpledateformat

我想问一下java.util.Date的用法。这是我的示例类

         public class DateConverter {
           public static void main(String[] args) {
                  SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
                  Date today = new Date();
                  String dateAsString_format = simpleDateFormat.format(today);
                  System.out.println("Formatted Date String (String datatype): " + dateAsString_format);
                  Date parsedDate = null;
                  try {
                      parsedDate = simpleDateFormat.parse(dateAsString_format);
                  } catch (ParseException e) {
                      e.printStackTrace();
                  }
                  System.out.println("Parse Date (Date datatype): " + parsedDate);
               }
            }

我的输出是

         Formatted Date String (String datatype): 06/10/2013
         Parse Date (Date datatype): Sun Oct 06 00:00:00 MMT 2013

但我想获得以下输出

         Formatted Date String (String datatype): 06/10/2013
         Parse Date (Date datatype): 06/10/2013

是否可以使用特定格式获取Date对象?

2 个答案:

答案 0 :(得分:4)

是的,扩展Date添加格式字段并覆盖toString方法,类似于

public class DateWithFormat extends Date {
   String format; // Assign as appropriate
   public String toString() {
     return new SimpleDateFormat(format).format(this));
   } 
}

答案 1 :(得分:3)

  

是否可以使用特定格式获取Date对象?

没有。 Date没有任何格式。它表示自纪元以来的毫秒数。您只能使用SimpleDateFormat获取格式化的字符串,这是您已经完成的。

打印Date会调用已覆盖的Date#toString()方法,该方法使用默认格式,其中每个Date都会打印出来。

以下是Date#toString()来源的显示方式:

public String toString() {
    // "EEE MMM dd HH:mm:ss zzz yyyy";
    BaseCalendar.Date date = normalize();
    StringBuilder sb = new StringBuilder(28);
    int index = date.getDayOfWeek();
    if (index == gcal.SUNDAY) {
        index = 8;
    }
    ....  // some more code
}

因此使用的格式为"EEE MMM dd HH:mm:ss zzz yyyy"