java中的日期格式

时间:2010-12-07 15:16:36

标签: java

我的要求是以MM/dd/yy格式获取日期。但我目前的日期值为“Sun Dec 31 00:00:00 IST 2006”。我尝试了一个转换示例代码,如下所示。

String pattern = "MM/dd/yyyy";
  SimpleDateFormat format = new SimpleDateFormat(pattern);
  try {
    Date date = format.parse("12/31/2006");
    System.out.println(date);
  } catch (ParseException e) {
    e.printStackTrace();
  }

请帮我将指定日期转换为MM/dd/yy

4 个答案:

答案 0 :(得分:7)

您还需要使用SDF(SimpleDateFormat)来处理输出。

String pattern = "MM/dd/yyyy"; 
  SimpleDateFormat format = new SimpleDateFormat(pattern); 
  try { 
    Date date = format.parse("12/31/2006"); 
    System.out.println(format.format(date)); 
  } catch (ParseException e) { 
    e.printStackTrace(); 
  }

答案 1 :(得分:1)

将您的代码更改为:

String pattern = ;
SimpleDateFormat inputFormat = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat outputFormat = new SimpleDateFormat("MM/dd/yy");
try {
    Date date = inputFormat.parse("12/31/2006");
    System.out.println(outputFormat.format(date));
 } catch (ParseException e) {
    e.printStackTrace();
 }

答案 2 :(得分:1)

输出的原因是因为您通过System.out.println(date);输出日期对象,这有效地转换为System.out.println(date.toString());

toString() Date方法的输出日期格式为:

EEE MMM dd HH:mm:ss zzz yyyy

这是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;
    }
    convertToAbbr(sb, wtb[index]).append(' ');            // EEE
    convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' ');  // MMM
    CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd

    CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':');   // HH
    CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm
    CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss
    TimeZone zi = date.getZone();
    if (zi != null) {
        sb.append(zi.getDisplayName(date.isDaylightTime(), zi.SHORT, Locale.US)); // zzz
    } else {
        sb.append("GMT");
    }
    sb.append(' ').append(date.getYear());  // yyyy
    return sb.toString();
    }

你的代码是正确的。使用SimpleDateFormat显示日期,如下所示:

System.out.println(format.format(date));

答案 3 :(得分:0)

你正在使用SimpleDateFormat 解析一个字符串,而且工作正常 - 但是当你<使用Date的toString方法时(隐式) em>格式化日期。这将使用默认格式,该格式完全独立于最初用于解析值的格式。

Date对象知道 nothing 关于如何格式化它。这就是你应该使用SimpleDateFormat for。

可以使用SimpleDateFormat再次格式化它:

System.out.println(format.format(date));

...但更好的方法是切换到Joda Time并使用其DateTimeFormatter类,这是线程安全且不可变的,与SimpleDateFormat不同...其余部分它的API也更好。