2012-02-22 14 views
1

"Today's Date"を既定値として使用するDateTimeフィールド(Date Only)があります。 ただし、ユーザーがリストに項目を追加すると、選択された日付がGMTタイムゾーンに対応します。SharePoint DateTime既定値タイムゾーン

2012年2月22日午後7時(EST)にユーザーがアイテムを追加すると、デフォルト値は実際に2012年2月23日に読み取られます。

私の最初の考えは、Webアプリケーションの設定を確認することでしたが、-5 ESTに設定されていました。その後、いくつかの検索の後、ユーザーの地域設定に基づいてタイムゾーンが異なることがわかりました。このアプローチをテストすると、私は手動でESTタイムゾーンを持つようにユーザーを設定し、同じ結果が得られたテストを実行しました。

最後に、より多くの検索後、私は「=は、NOW()」

これは、しかし、返されるDateTimeフィールドの計算値の部分を使用して指定すると述べた一品を見つけた「式に構文エラーが含まれているかではありませんサポートされています。

DateTimeフィールドのデフォルト値を持つ方法を知っている人は、Webアプリケーションまたはユーザーのタイムゾーンを尊重していますか?

ありがとうございます。

+1

んこのヘルプhttp://blogs.msdn.com/b/saurabh1/archive/2012/02/22 /調整-datetime-ユーザープロファイル時間zone-and-server-regional-settings-in-sharepoint.aspx – V4Vendetta

+0

これはプログラム的なアプローチかもしれませんが、ネイティブのデフォルト値または計算フィールドによる解決策を探しています。私がこの修正プログラムを実装すると考えることができる唯一の方法は、アイテムイベントレシーバーと手動で列を設定することです。これは私の状況では受け入れられません。 –

答えて

1

Sharepointはすべての日付フィールドをUTCで保存します。つまり、リストに日時フィールドを保存する場合、Sharepointは選択した時刻を実際にUTCに変換し、取得時にその人物がいるタイムゾーンに変換し直します。

まず、サーバーのタイムゾーンとクライアントの間に違いがあるかどうかを確認します。任意のAPIを使用している場合、SharePointは常にUTC時刻を返し、インターフェイスまたはアプリケーションで変換を行うためにあなたに任せます。

これを別の方法で解決したい場合は、datetimeデータ型を使用することはできず、代わりにテキストフィールドに日付を格納します。あなたは、SharePoint(常にUTCで)から日付を持って、単にあなたのローカル時間に変換したい場合は

== UPDATE ==

は、このあなたが得た場合には良い練習

DateTime localDateTime = sharePointDate.ToLocalTime(); 

です文字列として、日付、またはフォーマットの不確実であり、その他もろもろ、これは良いアプローチすることができ

string dateStr = ("2/18/2012 9:49:51 PM").ToString(CultureInfo.InvariantCulture); 
DateTime convertedDate = DateTime.SpecifyKind(DateTime.Parse(dateStr), DateTimeKind.Utc); 
DateTime localDateTime = convertedDate.ToLocalTime(); 
// Outputs 2/18/2012 10:49:51 PM since I'm +1 in sweden 
+0

ウェブアプリケーションとクライアントが同じタイムゾーンにあることを確認しました。これはSharePointの単なる「機能」ですか?この例をさらに説明すると、日時フィールド、DateOnly、およびデフォルト値 "Today's Date"を含むリストを作成します。その後、明日2/23/2012 00:05:00にそのリストに項目を追加します。表示されている日付は、UTC時間との相対的なものになりますか?だから、2012年2月22日を表示する? (私はあなたのプロフィールでスウェーデンのタイムゾーンから出ています) –

+0

ヘタって、私は日時変換について知っているスウェーデン人です:)しかし、あなたの前提は正しかった、という利点は、時間が中立モード、UTC。私は、あなたが望むものがより明確になったので、この例を解決策で更新しました! –

+0

ほとんどの問題を解決するためにDateTimeOffsetを使用しています。 –

関連する問題