6

私は3つのプロジェクトの解決策を持っています:

  1. Outlook アドイン
  2. ASP.NET Web サイト

Outlook アドインと Web サイトはどちらも、コア プロジェクトの同じ方法を使用して、SQL Server からデータを取得します。データをデータベースに書き込むときDateTime、2 つのテーブルのすべての値を UTC 時間に変換します。

POLL_START              POLL_END
2013-07-31 12:00:00.000 2013-08-01 12:00:00.000

PICK_DATE
2013-07-31 12:00:48.000
2013-07-31 13:00:12.000

Outlook アドインでデータを取得すると、これが正しい結果になります。

ここに画像の説明を入力 ここに画像の説明を入力

私のウェブサイトで同じものを開くとき、ピックは問題ありません:

ここに画像の説明を入力

しかし、私の開始時間と終了時間は「壊れています」 - オフセットが追加されていますが、間違った時間が使用されています:

ここに画像の説明を入力

Outlook と Web サイトの両方で使用する、私の変換用のコードは次のとおりです。

private static void ConvertToLocalTime(POLL item)
{
    item.POLL_START = item.POLL_START.FromUTC();
    item.POLL_END = item.POLL_END.FromUTC();
}

private static void ConvertToLocalTime(PICK pick)
{
    if (pick.PICK_DATE != null) pick.PICK_DATE = ((DateTime)pick.PICK_DATE).FromUTC();
}

そしての実装DateTime.FromUtc()

public static DateTime FromUTC(this DateTime value)
{
    var local = TimeZoneInfo.Local;
    return TimeZoneInfo.ConvertTime(value, TimeZoneInfo.Utc, local);
}

で同じ結果になりましたDateTime.ToLocalTime()。誰でもアイデアはありますか?

編集1:

これは、開始と終了が Web サイトに表示される方法です (Endではなく で終了しますStart)。

var startCell = new TableCell
        {
            Text = String.Format(
                @"<a href='{0}' title='{2}' target='_blank'>{1:dd.MM.yyyy HH:mm \U\T\Czzz}</a>",
                    Common.GetTimeAndDateHyperlink(_poll.Start, "Vote Start"),
                    _poll.Start,
                    ConvertToLocalTimeZone),
            CssClass = "InfoContent"
        };

そしてピック:

answerCell = new TableCell
            {
                Text = String.Format(
                    @"<a href='{0}' title='{2}' target='_blank'>{1}</a>",
                        Common.GetTimeAndDateHyperlink(ao.Time, ao.RealAnswer),
                        ao.RealAnswer,
                        ConvertToLocalTimeZone)
            };

ao.RealAnswerフォーマットされた DateTime 文字列を返します。

return String.Format(WholeTime == true ? "{0:d}" : @"{0:dd.MM.yyyy HH:mm \U\T\Czzz}", Time);
4

1 に答える 1