Java 时区日历问题
我在使用Java日历时遇到了一个奇怪的情况。我正在使用推土机映射器来映射对象 我想写一个方法,将此对象转换为以下格式<代码>yyyy-MM-dd'HH:MM:ss.SSS'Z' 假设元件2010-11-11T09:30:47.000ZJava 时区日历问题,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
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));