-1

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

我想编写一个方法,将此对象转换为以下格式。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 添加到 calenderget

有没有办法摆脱这个问题?我想返回 Calender 对象。

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

4

2 回答 2

2

使用模式。FE:

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);
于 2013-04-26T11:06:28.173 回答
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

于 2013-04-26T11:14:27.360 回答