Java 使用SimpleDataFormat将字符串转换为日期

Java 使用SimpleDataFormat将字符串转换为日期,java,date,simpledateformat,Java,Date,Simpledateformat,我从用户处获取一个字符串输入,我希望将其转换为java.util.Date实例,并使用SimpleDataFormat以特定方式打印它。它不是以指定方式打印的 try { Date date1; date1 = new SimpleDateFormat("MM/dd/yy").parse("05/18/05"); System.out.println(date1); } catch (Pars

我从用户处获取一个字符串输入,我希望将其转换为java.util.Date实例,并使用
SimpleDataFormat
以特定方式打印它。它不是以指定方式打印的

try {           Date date1;
            date1 = new SimpleDateFormat("MM/dd/yy").parse("05/18/05");
            System.out.println(date1);
        } 

        catch (ParseException e) {

            e.printStackTrace();
        }

您需要在打印日期之前对其进行格式化,否则将使用
日期的默认格式

try {           
   Date date1;
   SimpleDateFormat format = new SimpleDateFormat("MM/dd/yy");
   date1 = format.parse("05/18/05");
   System.out.println(format.format(date1));
} 
当你这样做的时候

System.out.println(date1);
在内部,该方法正在调用

date1.toString();
并打印其结果<代码>日期#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();
}

这将导致您看到的
日期字符串。

您需要在打印日期之前设置日期格式,否则将使用
日期的默认格式

try {           
   Date date1;
   SimpleDateFormat format = new SimpleDateFormat("MM/dd/yy");
   date1 = format.parse("05/18/05");
   System.out.println(format.format(date1));
} 
当你这样做的时候

System.out.println(date1);
在内部,该方法正在调用

date1.toString();
并打印其结果<代码>日期#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();
}
这将导致您看到的
Date
字符串

未按指定方式打印

try {           Date date1;
            date1 = new SimpleDateFormat("MM/dd/yy").parse("05/18/05");
            System.out.println(date1);
        } 

        catch (ParseException e) {

            e.printStackTrace();
        }
您没有指定一种方式。该日期没有其解析格式的历史记录。如果需要格式,则需要使用SimpleDataFormat.format()

未按指定方式打印

try {           Date date1;
            date1 = new SimpleDateFormat("MM/dd/yy").parse("05/18/05");
            System.out.println(date1);
        } 

        catch (ParseException e) {

            e.printStackTrace();
        }
您没有指定一种方式。该日期没有其解析格式的历史记录。如果您想要一种格式,您需要使用SimpleDataFormat.format()

试试这个

try {
            SimpleDateFormat sdin = new SimpleDateFormat("yyyy-MM-dd");
            SimpleDateFormat sdout = new SimpleDateFormat("yyyy-MMM-dd");
            Date date = sdin.parse("2013-05-31");
            System.out.println(sdout.format(date));
        } catch (ParseException ex) {
            Logger.getLogger(TestDate.class.getName()).log(Level.SEVERE, null, ex);
        }
试试这个

try {
            SimpleDateFormat sdin = new SimpleDateFormat("yyyy-MM-dd");
            SimpleDateFormat sdout = new SimpleDateFormat("yyyy-MMM-dd");
            Date date = sdin.parse("2013-05-31");
            System.out.println(sdout.format(date));
        } catch (ParseException ex) {
            Logger.getLogger(TestDate.class.getName()).log(Level.SEVERE, null, ex);
        }

format方法将最终生成字符串format@Sanjana
日期
没有格式。您的日期在
date1
中。您需要对它进行格式化,以便按照您的需要显示它。format方法最终将生成字符串。我需要java.util.date和MM/dd/yy中的输出format@Sanjana
日期
没有格式。您的日期在
date1
中。您需要对其进行格式化,以便根据需要显示它。