是否可以使用日期格式化程序格式化String类型的日期?我想将我的日期和时间作为字符串存储在Event类中,这样我就不需要将从MYSQL数据库加载的字符串(使用类型DATE和TIME)转换回Date类型,这样它们就可以存储在新事件中对象。 MySQL只接受YYYY-MM-DD
和TIME格式的DATE,格式为HH:MM:SS
,但我想在我的程序中打印出来时格式不同。
当我运行此代码时,我收到Cannot format given Object as a Date at java.text.DateFormat.format(Unknown Source)
错误。如果我尝试使用parse(),它将无法编译,因为它只接受日期。
主要课程
public Main() {
ArrayList<Event> events = new ArrayList<Event>();
private SimpleDateFormat timeFormat = new SimpleDateFormat("HH:MM:SS");
private SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-DD");
//Stores current time and date
Date date;
Date time;
String d = "";
String t = "";
d= dateFormat.parse(date);
t= timeFormat.parse(time);
events.add(d, t);
//Print out newly formatted date and time when loaded from mysql
System.out.println(events.get(0).printDate());
System.out.println(events.get(0).printTime());
}
活动类
public class Event {
private String date;
private String time;
public Event(String d, String t) {
date = d;
time = t;
}
public String printDate() {
SimpleDateFormat format = new SimpleDateFormat("DD/MM/YYYY");
String newDate = format.format(date);
return newDate;
}
public String printTime() {
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
String newTime = format.format(time);
return newTime;
}
}
答案 0 :(得分:1)
在事件中,您应该使用日期类型作为日期和时间字段。
这是日期和时间值的更合适的表示。使用它们,您可以使用DateFormat来执行您想要的任何格式化
(使用Joda time LocalDate和LocalTime作为你的日期和时间会更好,但这有点偏离主题)
答案 1 :(得分:1)
您无法设置日期格式,因为它们是String
个对象,SimpleDateFormat
需要Date
个对象。
您应该考虑另一种存储方式(Date
或Calendar
)。见下文:
public class Event
{
private Date date;
private Date time;
public Event(String d, String t)
{
String[] details = d.split("\\-");
Calendar c = Calendar.getInstance();
c.set(Integer.parseInt(details[0]), Integer.parseInt(details[1]), Integer.parseInt(details[2]));
date = c.getTime();
details = t.split(":");
c.set(Integer.parseInt(details[0]), Integer.parseInt(details[1]), Integer.parseInt(details[2]));
time = c.getTime();
}
public String printDate()
{
SimpleDateFormat format = new SimpleDateFormat("dd/MM/YYYY");
String newDate = format.format(date);
return newDate;
}
// rest of you class can stay the way it is
}
答案 2 :(得分:0)
检查javadoc以获取正确的格式代码。试试这个:
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
答案 3 :(得分:0)
您可以使用日期格式化程序格式化java.util.Date或java.sql.Date(它是java.util.Date的子类),例如:
DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
String dateStr = df.format(date);
使用jdbc ResultSet getDate()
方法,您可以获取java.sql.Date对象,您可以使用上述方法以任何格式打印
类似的技术也可用于将任何格式的字符串解析为java.util.Date对象
Date date = df.parse(dateStr);