Java 时区日历问题

Java 时区日历问题,java,calendar,dozer,Java,Calendar,Dozer,我在使用Java日历时遇到了一个奇怪的情况。我正在使用推土机映射器来映射对象 我想写一个方法,将此对象转换为以下格式yyyy-MM-dd'HH:MM:ss.SSS'Z' 假设元件2010-11-11T09:30:47.000Z public Calender getValue(Date source,Calender c) { Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); calendar.setTi

我在使用Java日历时遇到了一个奇怪的情况。我正在使用推土机映射器来映射对象

我想写一个方法,将此对象转换为以下格式<代码>yyyy-MM-dd'HH:MM:ss.SSS'Z'

假设元件2010-11-11T09:30:47.000Z

public Calender getValue(Date source,Calender c) {
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.setTime(source);
return calendar;
}
当我运行程序时,它正在打印 2010-11-11T04:00:47.000Z-因为我们将时区设置为GMT(9.30-5.30=4.00)

我希望我的对象具有相同的格式和值。如果我不将时区设置为GMT,它将显示为2008-11-21T09:30:47.000+05:30

我希望它是2010-11-11T09:30:47.000Z

我试着在日历上加上5.30

    calendar.add(Calendar.HOUR, 5);
    calendar.add(Calendar.MINUTE, 30)
然后它就工作了。但如果这是从任何其他地方运行的,差异不会是5.30。所以我不能在calenderget中添加5.30

有没有办法解决这个问题我想返回日历对象。


任何建议或帮助都将不胜感激

使用模式。F.E:

String pattern = "yyyy-MM-dd'T'HH:mm:ssZ";
DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern);
而且


您可以像这样使用SimpleDataFormat

   SimpleDateFormat formatter, FORMATTER;
   formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
   String oldDate = "2011-03-10T11:54:30.207Z";
   Date date = formatter.parse(oldDate.substring(0, 24));
   FORMATTER = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss.SSS");
   System.out.println("OldDate-->"+oldDate);
   System.out.println("NewDate-->"+FORMATTER.format(date));
输出旧日期-->2011-03-10T11:54:30.207Z新日期-->2011年3月10日11:54:30.207

   SimpleDateFormat formatter, FORMATTER;
   formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
   String oldDate = "2011-03-10T11:54:30.207Z";
   Date date = formatter.parse(oldDate.substring(0, 24));
   FORMATTER = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss.SSS");
   System.out.println("OldDate-->"+oldDate);
   System.out.println("NewDate-->"+FORMATTER.format(date));