我遇到了Java Calendar的奇怪情况。我正在使用推土机映射器来映射对象。
我想编写一个将此对象转换为以下格式的方法。 yyyy-MM-dd'T'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)
我希望我的对象具有相同的格式和值。如果我没有将TimeZone设置为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。所以我不能将5.30添加到日历
有没有办法摆脱这个问题? 我想返回Calender对象。
非常感谢任何建议或帮助
答案 0 :(得分:2)
使用模式。 F.E:
String pattern = "yyyy-MM-dd'T'HH:mm:ssZ";
DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern);
此外,
SimpleDateFormat dateformatyyyyMMdd = new SimpleDateFormat("yyyyMMdd");
String date_to_string = dateformatyyyyMMdd.format(dateNow);
答案 1 :(得分:0)
你可以像这样使用SimpleDateFormat。
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));
输出OldDate - > 2011-03-10T11:54:30.207Z NewDate - > 10-Mar-2011 11:54:30.207