最近、プラグインを介して Invoice エンティティのカスタム フィールドから日時値を取得しようとしたところ、CRM フォームに表示されている日付の前日を返すことがわかりました。たとえば、 「2013 年 7 月 1 日」と入力すると、C# で次のコードは「2013 年 6 月 30 日」を返します。
EntityReference eRef = new EntityReference(localContext.PluginExecutionContext.PrimaryEntityName, localContext.PluginExecutionContext.PrimaryEntityId);
var invoice = localContext.OrganizationService.Retrieve(eRef.LogicalName, eRef.Id, new ColumnSet(true));
string start = ((DateTime)invoice["revg_startdate"]).ToString(); //here I get 6/30/2013
次に、関連する MS SQL テーブルで実際の日時を確認したところ、ちょうど 1 日前の「2013年 6 月 30 日」が保持されています。
日付、時刻、およびタイムゾーンは、サーバー、PC、および CRM でまったく同じです。
CRMが異なる日付を保持および表示するのはなぜですか?