我有两个日期字段。用户可以从jQuery日期-时间选择器中选择日期,然后将其转换为UTC格式(通过Spring的自定义属性编辑器),并在提交表单时填充到Javabean中。
这些来自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.IollegalArgumentException:无效格式:"2013年2月17日22:45:59"在2013年2月22时45分59秒"中格式错误
那么,如何将这些日期转换为所需的格式呢?
DateTime
没有任何格式。它有一个值,是自1970年1月1日以来的毫秒数,还有一个年表。只有当您将DateTime
转换为String时,才需要选择一种格式。你已经知道如何做到这一点了,因为你正在做你的问题。
所以你想做的根本没有意义。