-1

Java Calendar で奇妙な状況が発生しています。オブジェクトのマッピングに dozer マッパーを使用しています。

このオブジェクトを次の形式に変換するメソッドを書きたいと思います。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 に答える