2009-07-11 14 views
6

मैं अपने स्थानीय टाइमज़ोन में समय स्टोर नहीं करना चाहता, लेकिन सीक्वेल इसे मेरे लिए वास्तव में कठिन बना रहा है। मैं उन्हें वहां रखने से पहले यूटीसी में सेट कर सकता हूं (दर्द का थोड़ा सा), लेकिन फिर जब मैं उन्हें वापस ले जाता हूं तो यह मानता है कि वे स्थानीय तिथियां हैं और फिर वे भविष्य में सभी 8 घंटे हैं। क्या यह ऐसा कुछ है जिसे अभी तक लागू नहीं किया गया है? और यदि हां, तो क्या कोई कामकाज है? धन्यवाद!सीक्वेल के साथ यूटीसी का उपयोग करना?

उत्तर

3

सबसे आसान यूटीसी के रूप में उन्हें रखने की कोशिश करने का तरीका यूटीसी समय की शाब्दिक स्ट्रिंग को वापस करने के लिए उपयोग किए जा रहे डेटासेट क्लास के लिए literal_datetime और/या literal_time को ओवरराइड करना है।

यूटीसी में उन्हें बाहर निकालने के लिए आप जिस एडाप्टर का उपयोग कर रहे हैं उस पर निर्भर करता है। उदाहरण के लिए, पोस्टग्रेस एडाप्टर Sequel.string_to_datetime कॉल करता है, जो केवल Sequel.datetime_class (डिफ़ॉल्ट रूप से समय) पर पार्स कहता है। यदि डेटाटाइम कॉलम में टाइमज़ोन जानकारी शामिल है, तो चीजों को ठीक काम करना चाहिए। यदि इसमें टाइमज़ोन जानकारी शामिल नहीं है, तो Time.parse यह मानने जा रहा है कि इसे स्थानीय समय दिया जाता है। उस स्थिति में, आप यह सुनिश्चित करने के लिए Sequel.string_to_datetime को ओवरराइड करना चाह सकते हैं कि यह हमेशा यूटीसी ऑफसेट के साथ समय लौटाता है (शायद Time.parse (s) .gmtime को कॉल करके)।

5

बस मेरे पास एक बहुत ही समान समस्या थी।

यह जानकारी या तो समय या datetime से मैप समय के लिए डेटाबेस से लौटे उपयोग कर सकते हैं Sequel RDoc

अगली कड़ी से लिया गया है। यह समय पर डिफ़ॉल्ट है। दिनांक समय के लिए इसे बदलने के लिए, का उपयोग करें:

Sequel.datetime_class = DateTime 

भी सुनिश्चित करें कि आपके अपने डेटाबेस में समय क्षेत्र जानकारी संग्रहीत नहीं बनाते हैं। मैं पोस्टग्रेस का उपयोग कर रहा हूं और कॉलम प्रकार समय क्षेत्र के बिना टाइमस्टैम्प है।

इसका परिणाम यूटीसी में प्रदर्शित दिनांक/समय होना चाहिए। यह मेरे लिए काम किया है जब 2009-07-13T03 की दिनांक/समय में गुजर: 22: 53Z परिणाम के रूप में प्रदर्शित किया जाता है 2009-07-13T03: 22: 53 + 00: 00

18

यह इस बिंदु पर थोड़ा पुराना है, लेकिन मेरा मानना ​​है कि मूल उत्तर पोस्ट होने के बाद यहां सबसे अच्छा समाधान बदल गया है। यदि आप

Sequel.default_timezone = :utc 

अनुक्रम यूटीसी के रूप में हर समय व्यवहार करेंगे और प्रश्न में वर्णित व्यवहार को प्रदर्शित नहीं करेंगे।

http://sequel.jeremyevans.net/rdoc/classes/Sequel/Timezones.html

पर अधिक जानकारी प्राप्त करें
संबंधित मुद्दे