を返し、私は3つのプロジェクトのソリューションを持っています。Outlookアドインでは 現地時間にUTCを変換すると、奇妙な結果
どちらも、見通し
- コア
- アドインとウェブサイトは、コアプロジェクトと同じ方法を使用してSQL Serverからデータを取得します。
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アドインでデータを取得
、これは次のとおりです。私はデータベースに自分のデータを書き込むときに、私はUTC時間に二つのテーブルのすべてのDateTime
値を変換します正しい結果:私のウェブサイトで同じを開くと、ピックが細かいです:
しかし、私の開始時刻と終了時刻は、「壊れた」です - オフセットが追加され、間違った時間をビュートに使用されています
ここで
は、私が変換するためのコードです両方のこと、Outlookとウェブサイト、使用:
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()
と同じ結果を持っていました。 アイデアは誰ですか?EDIT 1:
これは、開始と終了は、ウェブサイト(
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);
ウェブページの時間を表示するために使用しているコードは何ですか? – Romoku
@Romokuはコードを追加しました – Herdo
[種類](http://msdn.microsoft.com/en-us/library/system.datetime.kind.aspx)プロパティが2つの間で異なると推測します。 – Greg