所以我一直在货架我在这个大脑(应该成为)简单的练习,以使程序把日期字符串转换为GregorianCalendar对象,对其进行格式化,并作为一个字符串再次回到它的时候,它的完成。
这是一个程序,它从文件中的文本的卡盘的最后一点,将其分解为单独的记录,则打破了记录到数据的各个部分,并将它们分配到一个人的对象。
我检查的代码在多个地方和代码不正是它应该做的事情,直到我所说的格式化功能,它抛出IllegalArgumentException。 该GergorianCalendar对象赋给它应该被分配的值(虽然打印它,再像下面看到...一个另外一回事),但该格式将不接受格式的对象。
不幸的是,教练是不太清楚如何使用GregorianCalendar的和SimpleDateFormat的(尚未分配我们与他们一起工作),并说:“它只是谷歌” ......我试过了,没有我已经找到了帮助。
我到目前为止的代码是:
public class DateUtil {
public static GregorianCalendar convertFromDMY(String dd_mm_yy) throws ParseException{
// this actually works, got rid of the original code idea
String[] splitDate = dd_mm_yy.split("-");
int days = Integer.parseInt(splitDate[0]);
int month = Integer.parseInt(splitDate[1]);
int year = Integer.parseInt(splitDate[2]);
// dates are going in right, checked in print statement,
// but the object is not getting formatted...
GregorianCalendar dateConverted = new GregorianCalendar(year, month, days);
format(dateConverted);
return dateConverted;
}
public static String format(GregorianCalendar date){
SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM-yyyy");
String dateFormatted = fmt.format(date);
return dateFormatted;
}
}
我得到的错误是:
Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object >as a Date at java.text.DateFormat.format(DateFormat.java:281) at java.text.Format.format(Format.java:140) at lab2.DateUtil.format(DateUtil.java:26) at lab2.DateUtil.convertFromDMY(DateUtil.java:19) at lab2.Lab2.createStudent(Lab2.java:75) at lab2.Lab2.main(Lab2.java:34)
还有一件事,我是即使使用GregorianCalendar的吧?? 当我打印出对象的值(应该是获得一个约会吗?)我得到这样的:
java.util.GregorianCalendar中的[时间= ?, areFieldsSet =假,areAllFieldsSet =假,宽松= TRUE,区= sun.util.calendar.ZoneInfo [ID = “美洲/温哥华”,偏移量= -28800000,dstSavings = 3600000,useDaylight =真,过渡= 189,lastRule = java.util.SimpleTimeZone中[ID =美国/温哥华,偏移= -28800000,dstSavings = 3600000,useDaylight =真,startYear = 0,STARTMODE = 3,startMonth = 2,朝九特派= 8, startDayOfWeek = 1,开始时间= 7200000,startTimeMode = 0,endMode = 3,endMonth = 10,endday指定= 1,一个endDayOfWeek = 1,结束时间= 7200000,endTimeMode = 0]],Firstdayofweek可= 1,minimalDaysInFirstWeek = 1,ERA = ?, YEAR = 1985,MONTH = 4,WEEK_OF_YEAR = ?, WEEK_OF_MONTH = ?, DAY_OF_MONTH = 22,DAY_OF_YEAR = ?, DAY_OF_WEEK = ?, DAY_OF_WEEK_IN_MONTH = ?, AM_PM = 0,HOUR = 0,HOUR_OF_DAY = 0,MINUTE = 0,SECOND = 0,微差= ?, ZONE_OFFSET = ?, DST_OFFSET =?]
年,月,DAY_OF_MONTH值都是正确的,因为他们是我传递到创建它的数字。
想法,建议,我是差得远了?
编辑
原来问题清理(谢谢assylias!),但我还是因为这两个功能都没有链接无法正常打印和要求是有距离的人对象打印出来的GregorianCalendar日期值(如生日是一个GregorianCalendar)。
更新的代码:
public class DateUtil {
static SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM-yyyy");
public static GregorianCalendar convertFromDMY(String dd_mm_yy) throws ParseException{
// this actually works, got rid of the original code idea
String[] splitDate = dd_mm_yy.split("-");
int days = Integer.parseInt(splitDate[0]);
int month = (Integer.parseInt(splitDate[1]) - 1);
int year = Integer.parseInt(splitDate[2]);
// dates go in properly
GregorianCalendar dateConverted = new GregorianCalendar(year, month, days);
String finalDate = format(dateConverted);
return ;
}
public static String format(GregorianCalendar date) throws ParseException{
fmt.setCalendar(date);
String dateFormatted = fmt.format(date.getTime());
System.out.println(dateFormatted);
return dateFormatted;
}
}
最后编辑
好了,所以似乎我是个白痴,没有需要两个DateUtil功能联系在一起,但在串联使用它们。 首先,出生日期转换为GregorianCalendar并将其存储在人对象。 然后在打印语句只是简单地告诉程序,因为它是被打印到格式化日期。 问题得到解决。 根据所有作品规格现在,我觉得那么多愚蠢,因为我挥舞像鱼离开了水的最后一天左右与DateUtil类,试图让他们在同一时间工作。
感谢您的帮助所有在得到的日期去正确!