2

この問題について説明するのが楽しみではありませんでしたが、回答が必要なまったく同じ質問を含む別のフォーラム Web サイトを見つけました (ただし、回答はありませんでした)

クライアントのデスクトップにインストールされる大規模な Windows .Net アプリケーション (winform 実行可能ファイル) があります。このアプリケーションは、異なるタイムゾーンのサーバーで Web サービスを呼び出します。実質的にすべての日付指向のコンポーネントは、タイムゾーンの違いを検出し、(SQL クエリによって生成されたデータセットで返される) 日時の値を自動的に調整します。これは、ほとんどのアプリケーションでは一般的に望ましいことですが、「日付」指向ではなく「日付」指向の会計関連アプリケーションでは問題が発生します。「日付」部分のみに関心があります。ただし、2003 年 1 月 1 日 GMT-5 の日付は、クライアント上で 2002 年 12 月 31 日 11:00 GMT-6 に自動的に変換されます。すべてのコードを調べて UniversalTime を抽出し、視覚的な目的で 2003 年 1 月 1 日に戻すのではなく、単純に「偽装」したいと考えています。

質問: グローバル設定ではなく、現在実行中のインスタンスのみに対して TimeZone をプログラムで設定できますか?

それは私たちの正確な問題であるため、追加することはあまりありません。この場合、リモート SQL データをデータセットにフェッチし、レポートをデータセットにバインドする ActiveReports があります。たとえば、誕生日の日付を保存していて、西側のタイム ゾーンの日付から X 時間が差し引かれているため、誕生日は間違っているのでしょうか? したがって、生年月日はマイナス 1 ずれています。

何かご意見は?

ありがとう!

セス

4

1 に答える 1

-1

この問題に対処する方法は、日付の文字列表現をシリアル化することです。

文字列日付のプロパティ実装は、実際の日付プロパティとの間で適切な変換を実行します。

例えば:

    [NonSerialized]
    public DateTime MyDate { get; set; }

    [System.Xml.Serialization.XmlAttribute("MyDate")]
    public string MyDateString
    {
        get
        {
            if (MyDate.Equals(DateTime.MinValue))
            {
                return string.Empty;
            }
            else
            {
                return MyDate.ToShortDateString();
            }
        }
        set
        {
            DateTime dtTemp = DateTime.MinValue;
            if (DateTime.TryParse(value, out dtTemp))
            {
                MyDate = dtTemp;
            }
            else
            {
                MyDate = DateTime.MinValue;
            }
        }
    }
于 2012-01-19T17:38:33.547 に答える