2

TimeZoneInfo.Local.IdMonoTouch で使用すると、 CET(中央ヨーロッパ時間) を取得します。ASP.NET では、Central Europe Standard Time.

タイム ゾーンを iOS デバイス (MonoTouch) から ASP.NET Web サービスに転送する必要があります。タイム ゾーンの差 (UTC +1) を転送するだけでは十分ではありません。これは、国固有の夏時間設定を考慮しないためです。

iPhone のタイム ゾーンを Web サービスに取得する最良の方法は何ですか?

4

3 に答える 3

4

MonoTouch 内のタイム ゾーンには複数のデータ ソースがあります。

1 つは .NET ベース クラス ライブラリ (BCL) からSystem.TimeZoneInfoのもので、Microsoft .NET 実装との互換性 (データではなく構造) を意図しています。これには 2 つの欠点があります。

  • MS データと 100% 互換性があるわけではありません (別のデータ ソースが使用されました)。

  • 更新された MonoTouch でアプリケーションを再構築しないと更新できません。

もう 1 つはMonoTouch.Foundation.NSTimeZone、iOS API へのバインディングです。API は少し異なりますが、返されるデータは他の iOS アプリケーションが使用するものと一致し、更新されます (iOS の更新により)。

iPhone のタイム ゾーンを Web サービスに取得する最良の方法は何ですか?

上記の理由から、 IMOMonoTouch.Foundation.NSTimeZoneの方が適しています。

タイム ゾーンの差 (UTC +1) を転送するだけでは十分ではありません。これは、国固有の夏時間設定を考慮しないためです。

UTC へのオフセットについては、次の方法で夏時間固有のオフセット (秒単位) を取得できます。

var dlo = NSTimeZone.LocalTimeZone.DaylightSavingTimeOffset (NSDate.Now);
于 2012-04-16T12:59:46.930 に答える
1

TimeZoneInfoWindows では Windows タイム ゾーン ID を使用しますが、MonoTouch ではおそらく iOS ID を使用します (ただし、zoneinfo 名ではなく CET を取得することに少し驚いています)。

2 つをマッピングしたとしても、常に同じ結果が得られるとは限りません。Windows は、さまざまなタイミングでタイム ゾーン情報を iOS に更新します。単一のシステムですべてのタイム ゾーンの計算を実行するか独自の「埋め込み」タイム ゾーンの実装を両方の場所で使用して、一貫性を確保する必要があります私のNoda Timeプロジェクトここで動作する可能性がありますが、MonoTouch で使用したことはありません。

于 2012-04-16T12:43:39.593 に答える
1

デバイスが異なるため、2 つの間のマッピングの導出を検討します。

おそらく、Monotouch アプリケーションでそれを行う必要があります。使用可能なタイムゾーンにリストされている TimeZoneInfo Id ごとに、サーバー上の同じ TimeZoneInfo の Id へのマッピングを保存します。

また、サーバーのタイムゾーンは Windows の更新によって駆動され、すべての Web サーバー (ファームがある場合) で必ずしも同じであるとは限らないことに注意してください。詳細については、http ://support.microsoft.com/gp/cp_dst を参照してください。

于 2012-04-16T12:42:12.513 に答える