1. ホーム
  2. java

[解決済み] JavaでcurrentTimeMillisを日付に変換する方法は?

2022-04-24 11:52:16

質問

サーバーで生成された特定のログファイルにミリ秒があり、そのログファイルが生成されたロケールもわかっています。 そのログの処理は、異なるタイムゾーンにあるサーバーで行われています。SimpleDateFormatに変換している間、プログラムはマシンの日付を取り、そのようなフォーマットされた日付は、サーバーの正しい時間を表さないようにします。これをエレガントに処理する方法はありますか?

long yourmilliseconds = 1322018752992l;
        //1322018752992-Nov 22, 2011 9:25:52 PM 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS",Locale.US);

GregorianCalendar calendar = new GregorianCalendar(TimeZone.getTimeZone("US/Central"));
calendar.setTimeInMillis(yourmilliseconds);

System.out.println("GregorianCalendar -"+sdf.format(calendar.getTime()));

DateTime jodaTime = new DateTime(yourmilliseconds, 
                    DateTimeZone.forTimeZone(TimeZone.getTimeZone("US/Central")));
DateTimeFormatter parser1 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss,SSS");

System.out.println("jodaTime "+parser1.print(jodaTime));

出力します。

Gregorian Calendar -2011-11-23 08:55:52,992
jodaTime 2011-11-22 21:25:52,992

解決方法は?

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeStamp);

int mYear = calendar.get(Calendar.YEAR);
int mMonth = calendar.get(Calendar.MONTH);
int mDay = calendar.get(Calendar.DAY_OF_MONTH);