2008-09-17 12 views
2

[OK] - 少し口が開いています。だから私が持っている問題はこれです - 私は期限の日付を格納する必要がありますの部分だけが必要と私はタイムゾーンの変換をしたくないです。たとえば、2008年3月8日に有効期限が設定されている場合、タイムゾーンに関係なく、その値がどのクライアントにも返されるようにしたいと考えています。 DateTimeとしてリモート処理する際の問題は、 "08 March 2008 00:00"として保存/送信されることです。これは、私のタイムゾーンの西から接続しているクライアントが変換されたため、2008年3月7日に反転したことを意味します。 このシナリオをきれいに処理するための提案はありますか?明らかにそれを文字列として送信すると動作します。他に何か ? おかげで、 イアン.Netのタイムゾーンで日付のみの日付を処理する

答えて

0

あなたが好き、あなたが/必要性をしたいの詳細へのアクセスを提供する構造体の日付を作成することができます。

public struct Date 
{ 
    public int Month; //or string instead of int 
    public int Day; 
    public int Year; 
} 

これは、柔軟で軽量で、あなたに完全に制御することができます。

0

あなたはUTC時間としてそれを送ることができます

dateTime1.ToUniversalTime()

0

は、私はあなたが強制的に見ることができるが、タイムスタンプ文字列として送ることが最速/最も簡単な方法だと思いますロケールが発生してからの時間変換を停止します。

0

文字列として送信し、必要に応じて日付型に戻してみませんか?この方法では、異なるタイムゾーンで変換されません。単純にする。

編集:私はStructのアイデアが好きで、良い機能が得られます。

0

これまでのアプリでこれを処理した最も簡単な方法は、日付をyyyy-mm-dd形式の文字列として保存することです。それは曖昧ではなく、何かによって自動的に翻訳されることはありません。

はい、それは苦痛だ...

1

私はあなたが参照しているものリモーティング技術わからないんだけど、これが唯一の現在のxsとしてのDateTimeをシリアライズサポートWCF、と本当の問題である:日時、タイムゾーンに興味がない日付のみの価値には不適切です。

.NET 3.5では、新しいDateTimeOffset型が導入されています。これは、タイムゾーン間でDateTimeを転送するのには適していますが、日付のみのシナリオでは役に立ちません。

理想的にはWCFがサポートXSをオプションする必要があります:ここで要求されるように日付をシリアル化するための日付:

http://connect.microsoft.com/wcf/feedback/ViewFeedback.aspx?FeedbackID=349215

1

私はこのようにそれを行う:私はメモリ内の日付を持っているか、それは常にあるファイルに保存されているときはいつでもUTCでのDateTimeで指定します。ユーザーに日付を表​​示すると、常に文字列になります。文字列とDateTimeの間で変換すると、タイムゾーン変換も行います。

この方法では、論理的にタイムゾーンを扱う必要はありません。プレゼンテーションだけです。

関連する問題