java - 如何将 "2019-04-11T05:00:54.000+01:00"转换为 dd/MM/yyyy hh :mm format

标签 java date time format

我无法将 XMLGregorianCalendar dateTime 转换为格式 dd/mm/yyyy HH:mm

public class HelloWorld{

 public static void main(String []args){

     XMLGregorianCalendar Datetime ="2019-04-11T05:00:54.000+01:00";

    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm");


      String requiredDate = formatter.format(Datetime);

     System.out.println("requiredDate" + requiredDate);

 }
}

我收到错误为----

incompatible types: String cannot be converted to XMLGregorianCalendar
     XMLGregorianCalendar Datetime ="2019-04-11T05:00:54.000+01:00";

最佳答案

java.time

    DateTimeFormatter requiredFormatter
            = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT)
                    .withLocale(Locale.FRENCH);

    String originalDateTimeString = "2019-04-11T05:00:54.000+01:00";
    OffsetDateTime dateTime = OffsetDateTime.parse(originalDateTimeString);
    String requiredDate = dateTime.format(requiredFormatter);
    System.out.println("requiredDate: " + requiredDate);

此代码片段的输出是(在 Java 9.0.4 上):

requiredDate: 11/04/2019 05:00

使用 Java 内置的本地化日期和时间格式。不必费心通过格式模式字符串滚动您自己的格式化程序。在大多数情况下,Java 更了解受众的期望,编写格式模式字符串很容易出错,而使用内置格式的代码更适合移植到不同的语言环境。当然,我不知道您想要的区域设置是否是法语,因为许多其他区域设置也符合您要求的格式,dd/mm/yyyy HH:mm。只需选择适合您情况的区域设置即可。

您尝试使用的日期/时间类 XMLGregorianCalendarSimpleDateFormat 现在已经过时了,而后者非常麻烦,因此如果您有以下情况,则不应使用它们:可以避免它(你可以)。相反,我使用 java.time,现代 Java 日期和时间 API。

您的代码出了什么问题?

  • 小一点,Java 中的变量名称以小写字母开头,因此您的变量应称为 dateTimedatetime
  • 您无法将字符串(例如 "2019-04-11T05:00:54.000+01:00")分配给 XMLGregorianCalendar 类型的变量。这就是您的错误消息试图告诉您的内容。正确的转换方法是 zmr 的答案中已经显示的方法:

       XMLGregorianCalendar dateTime = DatatypeFactory.newInstance()
               .newXMLGregorianCalendar("2019-04-11T05:00:54.000+01:00");
    
  • SimpleDateFormat 无法格式化 XMLGregorianCalendar。代码可以编译,但在运行时您会收到 java.lang.IllegalArgumentException: Cannot format给定的对象为日期

链接

Oracle tutorial: Date Time解释如何使用 java.time。

关于java - 如何将 "2019-04-11T05:00:54.000+01:00"转换为 dd/MM/yyyy hh :mm format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55645401/

相关文章:

java - 如何操作位图中的像素?

按日期对 SPARQL 结果排序

python - 如何检查 2 个日期时间对象的时间差异?

c++ - 如何将秒转换为hh :mm:ss.毫秒格式c++?

java - drools - 具有多个条件的数组列表访问

java - 需要阻止txt文件中的单词覆盖JAVA

php - 如何从今天的日期获取下个月的日期并将其插入我的数据库中?

java - json 反序列化因格式有效而失败

php - 为什么我将日期时间从 javascript 传递到 php 后得到不同的日期值?

java - 当 mysql-connector-java-8.0.16.jar 位于类路径中时,为什么会收到 java.lang.ClassNotFoundException : com. mysql.cj.jdbc.Driver?