我的要求是以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
答案 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也更好。