0

私のアプリケーションは、Windows OS を搭載したあらゆる種類のマシンで実行できます。これで、Java で構築されたサーバー ホスト REST API と通信します。

今、私はこのようなutc形式で時間を取得しようとしています

Console.WriteLine("utc : " + DateTime.UtcNow);
Console.WriteLine("utc : " + DateTime.Now.ToUniversalTime());
Console.WriteLine("normal : " + DateTime.Now);

その出力は次のようになります-

window7 マシンで

utc : 03-05-2012 10:48:22
utc : 03-05-2012 10:48:22
normal : 03-05-2012 16:18:22

Windows Server 2008R2 マシン上

utc : 5/3/2012 10:47:35 AM
utc : 5/3/2012 10:47:35 AM
normal : 5/3/2012 4:17:35 PM

現在、サーバーマシンでは午前/午後でUTC時間を提供していますが、window7マシンでは午前/午後なしで時間を提供しているのはなぜですか?

すべての種類の Windows OS で同じ utc 時刻を同じ形式で返すメソッドはありますか?

ありがとう

4

7 に答える 7

2

出力形式は、OSのバージョンではなく、カルチャによって異なります。説明については、標準の日付と時刻の形式の文字列を参照してください。

于 2012-05-03T10:59:56.583 に答える
2

必ずしも OS とは関係ありません。コードが実行されるロケールと関係があります。マシンが異なるロケールで設定されている可能性があり、それが違いを説明しています。

形式を正確に制御する必要がある場合は、DateTime.String(string format)メソッドを介して形式を手動で指定して、カスタム形式の文字列を使用する必要があります。

于 2012-05-03T11:00:58.817 に答える
0

カスタムの日付と時刻の形式の文字列は、次のコマンドで使用できます。

DateTime.ToString("format string", IFormatProvider)

例:

  DateTime.ToString("dd MM yyyy", CultureInfo.InvariantCulture);

上記のコードで、「フォーマット文字列」がJavaで期待されるものであることを確認してください

于 2012-05-03T11:00:20.983 に答える
0

日付に使用する特定の形式を指定する (アプリケーション間で合意)

日付をシリアル化する C#:

Console.WriteLine("utc : " + String.Format("{0:d/M/yyyy HH:mm:ss}", DateTime.UtcNow));
Console.WriteLine("utc : " + String.Format("{0:d/M/yyyy HH:mm:ss}", DateTime.Now.ToUniversalTime()));
Console.WriteLine("normal : " + String.Format("{0:d/M/yyyy HH:mm:ss}", DateTime.Now));

日付を解析する Java:

DateFormat formatter = new SimpleDateFormat("d/M/yyyy HH:mm:ss");
Date date = (Date) formatter.parse(dateToParse);
于 2012-05-03T11:01:33.650 に答える
0

基本的に yyyy-MM-ddTHH:mm:ss 形式である ToString("s") を使用すると、異なる文化を持つ異なる OS でも同じ形式になります。

私たちは通常、このような種類の通信に「ソート可能な日付/時刻パターン」を使用しています。

V4Vendetta とそのコメントに感謝します。

同じ問題を抱えている同じ投稿を読んでいる他の人がいるでしょう。

于 2012-05-04T04:38:55.100 に答える
0

アイデアの 1 つは、ミリ秒単位で時間を送信し、Java 側でミリ秒を dateTime に変換できることです。

于 2012-05-03T11:07:42.320 に答える