编程语言
首页 > 编程语言> > 将Java Gregorian Calendar转换为String

将Java Gregorian Calendar转换为String

作者:互联网

我有一个Book Class,它的一个属性是:

private Calendar publish_date;

现在我想在library.xml文件中插入一个新书.所以我创作了一本书:

Book b = new Book();
b.setPublish_date(new GregorianCalendar(1975, 5, 7));

我需要将该日期作为String,以便我可以将其写入XML文件(使用DOM).所以我执行:

    Element publish_date = doc.createElement("publish_date");
    SimpleDateFormat formatter=new SimpleDateFormat("yyyy MM DD"); 
    publish_date.appendChild(doc.createTextNode(formatter.format(b.getPublish_date())));
    book.appendChild(publish_date);

但这是错误:

java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(DateFormat.java:301)
at java.text.Format.format(Format.java:157)
at fileLock.FileLock.updateLibrary(FileLock.java:127)
at fileLock.FileLock.main(FileLock.java:63)

那么哪个是将日历(阳历)转换为字符串的正确方法?谢谢

解决方法:

A SimpleDateFormat无法格式化GregorianCalendar;它可以格式化日期,因此首先将其转换为日期.你当天得到158,因为DD是一年中的一天,但是dd(小写)是一个月中的某一天.

SimpleDateFormat formatter=new SimpleDateFormat("yyyy MM dd");   // lowercase "dd"
publish_date.appendChild(doc.createTextNode(formatter.format(
    b.getPublish_date().getTime() )));

另外,您可能已经知道,您可能不知道,但Java中的月份数为0-11,因此在格式化时,第5个月是6月,所以它出现为06.

输出:

1975 06 07

标签:gregorian-calendar,java,dom,xml,calendar
来源: https://codeday.me/bug/20190830/1769664.html