0

奇妙なバグ、

SharePointリストアイテムを挿入するときに、送信日をDateTime.Nowに設定しました。これで、SharePointをチェックすると、正しい日付とすべての値でアイテムが正常に挿入されていることがわかります。

oListItem["Date_x0020_Submitted"] = DateTime.Now;

でも、どういうわけか全く同じリストアイテムを取りに行くと、4時間後の日付に戻ってきます!!

    query.ViewXml = "<View><Query><OrderBy><FieldRef Name='Date_x0020_Submitted' Ascending='FALSE' /></OrderBy></Query><RowLimit>1</RowLimit></View>";
    SP.ListItemCollection issuesCollection = oList.GetItems(query);
    MyContext.Load(issuesCollection, (items => items.Include(item => item["ID"], item => item["Date_x0020_Submitted"])));

繰り返しになりますが、アイテムを挿入した後、正しい正確な日付が挿入されたリストに表示されますが、何らかの理由でアイテムを取得すると、4時間後になります。たとえば、SharePointでは10:53と表示されますが、取得すると2:53と表示されます。

なぜこれが起こっているのか誰かが知っていますか?これは、挿入および取得するすべてのアイテムで発生します。

4

1 に答える 1

3

保存する時刻は現地時間です(UTC-5:00、おそらくDSTを使用)。Sharepointによって返される時刻がUTC時刻として返される可能性はありますか?Kindクラスのプロパティは、DateTimeそれがどのような時間であるかを示します(これは、.NET Frameworkのさまざまなバージョンによって変更されています)。

var kind = DateTime.Now.Kind;

返された時刻を現地時間に変換して、一致するかどうかを確認できます。

var localTime = utcTime.ToLocalTime();

あなたがあなたの時間は文字列として与えられているとあなたが言うように(私はそのフォーマットが文字列のように見えないので私は思うが)それを解析することを試みることができる:

  string fmt = "M/d/yyyy h:mm:ss tt"; // this is equivalent to format you have shown
  string stime = "9/14/2012 3:38:04 PM"; // your string here
  var time = DateTime.ParseExact(time, fmt, CultureInfo.InvariantCulture);
  var local = time.ToLocalTime(); // => 14.9.2012. 17:38:04 in my timezone
于 2012-09-14T15:29:08.380 に答える