我在日期对象中获取日期
Date s = ((java.util.Date) ((Object[]) object)[++i]);
我需要设置这种格式 20130509 06:00
所以为此我选择了..
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm");
String s1 = sdf.format(s);
现在我的任务是放回字符串 s1 的日期对象,请告知如何实现这一点
我在日期对象中获取日期
Date s = ((java.util.Date) ((Object[]) object)[++i]);
我需要设置这种格式 20130509 06:00
所以为此我选择了..
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm");
String s1 = sdf.format(s);
现在我的任务是放回字符串 s1 的日期对象,请告知如何实现这一点
理想情况下,您不应该尝试转换为字符串格式并再次转换回来。您应该保留原始值,并且仅将字符串格式用于显示目的。
否则,您可以使用 SimpleDateFormat.parse 方法。
我建议使用 Joda 时间......鉴于你所拥有的,你可以做些什么
sdf.parse
@Test
public void testDateStringConversion() throws ParseException {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm");
String s1 = sdf.format(date);
Date date2 = sdf.parse(s1); // seconds won't match
String s2 = sdf.format(date2);
assertEquals(s1, s2);
}
Date
没有文本格式 - 甚至没有时区或日历。自 unix 时代以来,这只是几毫秒。内没有什么可设置的Date
。
您需要区分基本数据和该数据的文本表示 - 就像int
值 16 与 0x10 一样。我想不出任何时候我发现将日期的文本表示与日期本身放在一起是合适的。在程序的不同地方,您很可能会发现同一日期需要不同的表示形式——但对于程序特定部分的所有日期,它通常是相同的表示形式。
顺便说一句,您应该考虑使用Joda Time而不是java.util.Date
- 它为您提供了要考虑的更丰富的类型集,因此您可以表达您的程序实际处理的内容(只是一个日期,只是一个时间,一个日期/时间在特定时区等)。