6

私のASP.NETアプリケーションでは、ここからのコードを使用して、アプリケーションのビルド日をUTCとして検索します。アセンブリファイルから読み取られたUTC値は、次のようにフォーマットされます。

//DateTime time    
return time.ToString("dd MMM yyyy HH:mm:ss");

これで、1人のユーザーがそのアプリケーションによって提供されるページを開き、表示されます

28 сен 2012 04:13:56

同じページを開いて表示する他のユーザーに通知します

27 Sep 2012 12:14:32

両方の要求は、まったく同じパッケージからWindows Azure VMをクリーンアップするためにデプロイされた同じアプリケーションによって処理されるため、両方のユーザーに対して実行されているコードは確かにまったく同じです。

明らかに、異なるユーザーからのリクエストのローカリゼーションが異なるため、文字列のフォーマットも異なります。1人のユーザーには月が表示されSep、もう1人のユーザーには月が表示されます(ロシア語にсен相当)。Sep

なぜ時間が違うのですか?また、ローカリゼーションに依存するタイムゾーンに従って調整されていますか?

4

1 に答える 1

3

最も明白な説明は、DateTime値が実際には異なるということです。

リンクしたコードはを使用しており、 MSDNには次GetCallingAssemblyのように記載されていることに注意してください。

GetCallingAssemblyメソッドを呼び出すメソッドがジャストインタイム(JIT)コンパイラーによってインライン展開された場合、またはその呼び出し元がインライン展開された場合、GetCallingAssemblyによって返されるアセンブリが予期せず異なる場合があります。

これをデバッグするために、私は表示することから始めtime.Ticksますtime.Kind:これらが同一である場合、それは表示の問題であることがわかります。それらが異なる場合は、時間値をどのように生成しているかを確認する必要があります。

于 2012-09-28T09:03:57.610 に答える