我的输入字符串为2012-07-27,我希望输出为日期,但格式与2012-07-28相同
我的代码是
DateFormat df = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
try {
Date today = df.parse("20-12-2005");
System.out.println("Today = " + df.format(today));
} catch (ParseException e) {
e.printStackTrace();
}
我的输出是
Fri Jul 27 00:00:00 IST 2012
但我想返回日期对象,如2012-07-26 23:59:59,而不是字符串,请提供任何帮助。
非常感谢任何帮助
您必须使用另一个具有所需输出格式的SimpleDateFormat
(format()
)
首先,我认为重要的是要注意< code>System.out.println隐式调用其参数的< code>toString方法。该参数必须是< code >对象或其子类。而< code>Date是< code>Object的子类。也就是说,看看1.7的< code>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();
}
Date
对象的字符串表示形式指定为 EEE MMM dd HH:mm:ss zzz yyyy。
这正是你所看到的。
如果要以不同的格式显示< code>Date对象,请使用< code>SimpleDateFormat类。它的唯一目的是增加< code>Date对象表示为字符串的灵活性。
也…
一种可能的、尽管荒谬的解决方法是创建自己的包装类,
public class MyDate{
private final Date d;
private final SimpleDateFormat sdf;
public(Date d, SimpleDateFormat sdf){
this.d = d;
this.sdf = sdf;
}
// not recommended...should only be used for debugging purposes
@Override
public String toString(){
return sdf.format(d);
}
}
您可以使用与解析日期相同的< code>SimpleDateFormat将日期格式化为字符串。
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = formatter.parse("2012-07-27");
System.out.println(date1); // prints Fri Jul 27 00:00:00 IST 2012
System.out.println(formatter.format(date1)); // prints 2012-07-26
问题内容: 我想要这种格式 问题答案: 您需要先 解析 日期字符串(使用方法),才能 使用与格式匹配的格式获取对象。 然后使用所需的格式来 格式化 Date对象(Use 方法)以获取字符串。 输出:- 第一种格式是RFC 822 TimeZone与您的日期字符串匹配。有关在日期格式中使用的其他各种选项,请参见。
问题内容: 我想将此字符串转换为以下日期格式。 我收到此错误: 问题答案: 嗯,是。您传递给的构造函数的参数表示您希望日期采用的格式。 对于“ 2013年2月26日,星期二”之类的输入有效。它甚至不是 稍微 有效期为“2013年2月26日”。您知道您正在 解析 文本,而不是对其进行格式化吗? 看起来您想要的格式字符串为“ M-dd-yyyy”或可能为“ Md-yyyy”。 如果尝试将一种格式转换为
问题内容: 我正在尝试将字符串转换为日期 但在我看来,它有一个。的。这是为什么?我想生成一个日期 问题答案: 日期字符串- 符合- d-每月的某天 M-一年中的月份 y-年 …
我得到一串零。有人能帮忙吗?
我在presto上,把日期格式化为varchar,看起来像- 我如何转换这个?
问题内容: 我有一个包含日期格式的字符串。 您如何建议我以最佳方式将其转换为格式? 这就是我天真地做的事情: 但是还有其他更优雅,更有效的方法吗?就是 使用一些内置功能?快速搜寻API时,我找不到一个。 这里有人知道替代方法吗? 问题答案: 用途: