2011-08-25 19 views
5

イベントの日付と時刻を選択すると、Sitecoreの現在の日付/時刻ピッカーでは、CMサーバーのローカルシステム時刻(この場合は東部標準時/夏時間)が仮定されます。SitecoreでTimeZonesを管理するには?

コンテンツ作成者がイベントのタイムゾーンを選択する方法が必要であることが急速に明らかになりました。当初は、「PST」、「EST」、「EDT」などの事前定義されたタイムゾーンの略語のDroplistを提供することにしました。このソリューションは表示目的で正常に動作しましたが、動的に生成しようとすると問題に直面しました.ICSイベントのカレンダーの予定。

.ICSファイルを生成するには、Eventの開始日と終了日(これもESTまたはEDT)とタイムゾーンの省略形(EST、PSTなど)をUTC DateTimeオブジェクトに結合する方法が必要です。

ASP.NET does not support timezone abbreviations私は、UTCオフセット値とともに略語のリストを維持していると思います。コンテンツ作成者にGMT -08:00、GMT -07:00などのタイムゾーンのリストを与えるだけでは不十分です。選択を助けるために、何らかの種類の略語や名前を含める必要があります。

Sitecoreには、タイムゾーンを選択するための組み込みフィールドまたはユーティリティがありますか?

答えて

5

Sitecoreには、タイムゾーンを保存するためのテンプレートが組み込まれていませんが、独自のテンプレートを簡単に作成することができます。 DroplistDroplinkに変更することをお勧めします(ドロップリストが名前で参照アイテムを参照し、ドロップリンクが参照アイテムをGUIDで参照します)。次に、ソースの新しいテンプレートを作成します。あなたの新しいテンプレートは、タイムゾーンと呼ばれるものです。各項目の名前はフレンドリ名(例:EDT、PDTなど)にすることができ、項目には1つのフィールド、オフセットがあります。あなたのコードで、現在Droplinkからどのアイテムが選択されたのかを判断するときに、そのオフセットフィールドにアクセスして実際のオフセットを決定することができます。

ReferenceField timezoneSelected = item.Fields["Timezone"]; 
string offsetVal = timezoneSelected.TargetItem.Fields["Offset"].Value; 
// parse out the true value from offsetVal 
1

すべての日付/時刻をUTCで保存し、レンダリング時にEST、PTSなどに変換してみてください。 .Net TimeZoneInfoクラスを使用すると、保存されたUTC値をレンダリング時に適切なタイムゾーンに変換することができます。これは、日の節約の問題も解決します。

サイトコアは、このためにずっとサポートしていませんが、コンテンツ作成者のために物事を簡単にするために、あなたはそれがCMSにを入力するように時間帯がをドロップダウン含まれるようにサイトコアDateTimeフィールドを拡張することができます。拡張フィールド型は、UTCとコンテンツ作成者が優先するタイムゾーンの間の変換を処理する必要があります。

コンテンツの作成者が希望のタイムゾーンを保存できるように、ユーザープロファイルを拡張することもできます。あなたはUTC時にもサーバーを稼働させるべきですが、すでにESTに住んでいるので、変更することは非常に良い考えではないかもしれません。

1

また価値あなたは、いくつかの地理的に分散したサーバーを使用している場合には、あなただけではなく、UTCでそれらを持っていますが、同期する必要があることに言及するの。これは、DMSおよびxDBインスタンスを含むすべてに適用されます。

ない場合は、そのすべてが(デフォルトで)コアデータベースとを介して動作として、それは(出版など)イベントキューおよびリモートのイベントを中断しますが、実際にレコードが適切にデータベース内である(新しいイベントのためにチェックされていますタイムスタンプ)。

関連する問題