2011-08-25 13 views
5

साइटकोर में वर्तमान दिनांक/समय पिकर हमारे ईवेंट के लिए दिनांक और समय चुनते समय सीएम सर्वर (पूर्वी मानक/डेलाइट टाइम, हमारे मामले में) के स्थानीय सिस्टम समय को मानता है।साइटकोर में टाइमज़ोन का प्रबंधन कैसे करें?

यह जल्दी से स्पष्ट हो गया कि हमें सामग्री लेखकों के लिए घटनाओं के लिए समय क्षेत्र चुनने का एक तरीका चाहिए। प्रारंभ में, हमने ड्रॉपलिस्ट को पूर्वनिर्धारित टाइमज़ोन संक्षेपों जैसे '' पीएसटी ',' ईएसटी ',' ईडीटी 'इत्यादि प्रदान करने का निर्णय लिया। हालांकि इस समाधान ने प्रदर्शन उद्देश्यों के लिए ठीक काम किया, हम गतिशील रूप से उत्पन्न करने की कोशिश करते समय तुरंत समस्याओं में भाग गए घटनाओं के लिए .ICS कैलेंडर नियुक्तियां।

.ics फ़ाइलों को उत्पन्न करने के लिए, हमें ईवेंट की शुरुआत और समाप्ति तिथि (जो फिर से ईएसटी या ईडीटी में है) और टाइमफ़ोन संक्षेप (ईएसटी, पीएसटी, आदि) को एक यूटीसी डेटटाइम ऑब्जेक्ट में गठबंधन करने का एक तरीका चाहिए ।

यह मेरी समझ है कि ASP.NET does not support timezone abbreviations, इसलिए मेरा मानना ​​है कि हम उनके यूटीसी ऑफ़सेट मानों के साथ संक्षेपों की सूची बनाए रखने में फंस गए हैं। हमारे सामग्री लेखकों को जीएमटी -08: 00, जीएमटी -07: 00 इत्यादि जैसे समय क्षेत्र की सूची देने के लिए पर्याप्त नहीं है, हमें चयन करने में मदद के लिए किसी प्रकार का संक्षेप या नाम शामिल करने की आवश्यकता है।

क्या साइटकोर में टाइमज़ोन का चयन करने के लिए कोई अंतर्निहित फ़ील्ड या उपयोगिताओं है?

उत्तर

5

साइटकोर में टाइमज़ोन स्टोर करने के लिए एक अंतर्निहित टेम्पलेट नहीं है लेकिन आप ऐसा करने के लिए आसानी से अपना स्वयं का टेम्प्लेट बना सकते हैं। मेरा सुझाव है कि आप Droplist को Droplink पर बदलें (एक ड्रॉपलिस्ट संदर्भित संदर्भ नाम को संदर्भित करता है, एक ड्रॉपलिंक संदर्भित आइटम को GUID द्वारा संदर्भित करता है) फिर स्रोत के लिए एक नया टेम्पलेट बनाएं। आपका नया टेम्पलेट टाइमज़ोन नामक कुछ हो सकता है। प्रत्येक आइटम का नाम मित्रवत नाम (उदा। ईडीटी, पीडीटी, आदि) हो सकता है और आइटम पर एक फ़ील्ड हो सकता है, ऑफ़सेट। अपने कोड में, जब आप निर्धारित करते हैं कि अब ड्रॉपलिंक से कौन सी वस्तु चुनी गई है, तो आप वास्तविक ऑफसेट निर्धारित करने के लिए ऑफसेट फ़ील्ड तक पहुंच सकते हैं। इस तरह कुछ:

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

यूटीसी में सभी दिनांक/समय रखने और उन्हें समय प्रदान करने पर ईएसटी, पीटीएस आदि में बदलने का प्रयास करें। .Net TimeZoneInfo क्लास का उपयोग करके आप बस संग्रहीत यूटीसी मान को समय-समय पर उपयुक्त समय क्षेत्र में परिवर्तित कर सकते हैं। यह दिन प्रकाश बचत मुद्दों को भी हल करेगा।

साइटकोर के लिए इसके लिए बहुत अधिक समर्थन नहीं है, लेकिन सामग्री लेखकों के लिए चीजों को आसान बनाने के लिए, आप पर समय क्षेत्र ड्रॉप डाउन करने के लिए साइटकोर डेटटाइम फ़ील्ड का विस्तार कर सकते हैं क्योंकि यह सीएमएस में दर्ज किया गया है। विस्तारित फ़ील्ड प्रकार को यूटीसी और सामग्री लेखकों के पसंदीदा समय क्षेत्र के बीच रूपांतरण को संभालना चाहिए।

आप उपयोगकर्ता प्रोफ़ाइल भी बढ़ा सकते हैं ताकि सामग्री लेखक अपना पसंदीदा समय क्षेत्र स्टोर कर सकें। आपको अपने सर्वर को यूटीसी समय पर भी चलाया जाना चाहिए, लेकिन चूंकि आप पहले से ही ईएसटी के साथ रहते हैं, इसलिए इसे बदलने का एक अच्छा विचार नहीं हो सकता है।

3

"साइटकोर संस्करण 8.0 और बाद में, केवल यूटीसी दिनांक/समय मान डेटाबेस में सहेजा जाना चाहिए।" इस मामले पर https://doc.sitecore.net/sitecore_experience_platform/setting_up_and_maintaining/utc/datetime/storing_datetime_values_in_databases

अधिक: https://doc.sitecore.net/sitecore_experience_platform/utc?sc_lang=en

1

भी उल्लेख मामले में आप कुछ भौगोलिक रूप से वितरित सर्वर है कि के मूल्य, तो आप उन्हें बस नहीं UTC में होना चाहिए, लेकिन सिंक्रनाइज़। यह डीएमएस और एक्सडीबी उदाहरणों सहित सबकुछ पर भी लागू होता है।

यदि नहीं, तो यह घटना कतार और उस (डिफ़ॉल्ट रूप से) कोर डेटाबेस के माध्यम से सभी काम करता है और के रूप में दूरदराज घटनाओं (प्रकाशन) की तरह तोड़ नई घटनाओं (जो वास्तव में उचित साथ डेटाबेस में रिकॉर्ड कर रहे हैं के लिए चेक किया गया है जाएगा टाइमस्टैम्प)।

संबंधित मुद्दे