java - 将 Java 公历转换为字符串

标签 java xml dom calendar gregorian-calendar

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

private Calendar publish_date;

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

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

我需要将该日期作为字符串,以便我可以将其写入 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;它可以格式化一个Date,所以先把它转换成一个Date。您得到的是 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 是六月,所以它是 06

输出:

1975 06 07

关于java - 将 Java 公历转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24741696/

相关文章:

java - 使用 Java FileWriter 的文件未找到异常

java - 尝试对多个按钮使用 1 个 Action 监听器

java - 带注释的 EhCache 配置 - Hibernate

sql-server - 使用键/对表与 XML 字段和 XPath 的 SQL Server 性能

JavaScript:当我尝试使用 DOM 时,我的 for 循环似乎不起作用

php - 将数据从 PHP 直接传递到 DOM 变量

java - springdoc-openapi 如何在不更改 toString 的情况下使用 @JsonValue 枚举格式?

java - 用多态代替条件,但是怎么做

java - 引用的 XML 序列化

javascript - 在 Chrome 控制台中选择 DOM 元素