更改Joda的现有DateTime实例的日期时间格式

时间:2013-02-18 17:24:20

标签: java datetime jodatime

我有两个日期字段。用户可以从jQuery日期时间选择器中选择一个日期,然后将其转换为UTC格式(通过Spring的自定义属性编辑器),并在提交表单时填充到Java bean中。

来自Java bean的这些DateTime实例由org.apache.commons.beanutils.PropertyUtils通过反射检索,

final Object object1 = PropertyUtils.getProperty(beanObject, firstDate);
final Object object2 = PropertyUtils.getProperty(beanObject, secondDate);

这些对象是类型转换为DateTime

if(object1!=null && object2!=null)
{
    final DateTime startDate=((DateTime)object1).withZone(DateTimeZone.forID("Asia/Kolkata"));
    final DateTime endDate=((DateTime)object2).withZone(DateTimeZone.forID("Asia/Kolkata"));

    System.out.println("startDate = "+startDate+"\nendDate = "+endDate);
}

这会产生以下输出。

startDate = 2013-02-17T22:45:59.000+05:30
endDate = 2013-02-18T22:46:00.000+05:30

我需要将这些日期转换为这种格式 - dd-MMM-yyyy HH:mm:ss

我尝试过的以下方法无效。

DateTime newStartDate=new DateTime(startDate.toString("dd-MMM-yyyy HH:mm:ss"));
DateTime newEndDate=new DateTime(startDate.toString("dd-MMM-yyyy HH:mm:ss"));

System.out.println("newStartDate = "+newStartDate+"\nnewEndDate = "+newEndDate);

它提供以下例外。

  

java.lang.IllegalArgumentException:格式无效:“2013年2月17日   22:45:59“在”-Feb-2013 22:45:59“中表现不正确

那么如何将这些日期转换为所需的格式?

1 个答案:

答案 0 :(得分:1)

DateTime没有任何格式。它有一个值,这是自1970年1月1日以来的毫秒数和年表。只有当您将DateTime转换为String时才需要选择格式。而且你知道如何做到这一点,因为你在你的问题中这样做。

所以你想做的事情没有意义。