java - 格式化 XML 的日期以包含 UTC 偏移量

标签 java groovy datetime-format utc java-time

我正在生成一个包含有效 XML 格式日期的 XML,我还需要它包含一个 UTC 偏移量。

我正在使用 groovy 但我会展示我正在使用的 Java 代码(用任何一种语言回答都很好):

Calendar c = Calendar.getInstance();  
long timeZoneOffset = c.timeZone.getOffset(c.getTimeInMillis())/(1000*60*60);
SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
formatter.format(c.getTime()) + "+0" + timeZoneOffset + ":00";

上面的代码给了我 2011-06-12T07:23:25.000+03:00,但是这段代码有两个问题:

  1. 这很丑陋,而且可能不是最好的方法
  2. 它不适用于印度(GMT +5:30)、尼泊尔(GMT +5:45)

我尝试使用 new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss Z") 作为时区,但它给了我 2011-06-12T07: 23:25.000+0300 格式不正确(+0300 而不是 +03:00)。

还有其他方法可以按照我需要的方式格式化日期吗? (最好没有第 3 方)

最佳答案

另一种选择——也埋在 jaxb api 中——(不需要 Jodatime):

    Calendar c = ...
    String printDate = javax.xml.bind.DatatypeConverter.printDateTime(c);

HTH

关于java - 格式化 XML 的日期以包含 UTC 偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320183/

相关文章:

java - 子进程中的高 CPU 负载

java - IBM MobileFirst v8 登录 validator 的 LDAPS 配置

java - 如何将编译后的groovy脚本存储在数据库中以便稍后获取并在绑定(bind)所需变量后运行它

jenkins - 管道作业 - 向上游传递参数?

ASP.NET 在标签中显示日期

java - 以正确的顺序将项目添加到 Set<String> Java

java - 嵌套事务用例中的外部事务未看到数据库中持久保存的更新(JPA、MySQL、Spring Framework 和 Hibernate)

groovy - 使用 GVM 安装 Groovy

java - 在给定 JDK 8 DateTimeFormatter 的情况下获取原始模式字符串?

java - Spring Boot Thymeleaf 序号