2013-07-17 7 views
20

पर विभिन्न timezone_types मैं पर Postgres Doctrine2 का उपयोग करें। एक टेबल में मेरे पास दो अलग-अलग दिनांक प्रकार हैं: birthdate:date और created_at:datetimetz। दोनों डेटटाइम ऑब्जेक्ट बन जाते हैं लेकिन अलग-अलग timezone_type के साथ। यहाँ लिस्टिंग:दिनांक समय वस्तु

created_atdatetimetz:

DateTime Object 
(
    [date] => 2013-04-18 11:54:34 
    [timezone_type] => 1 
    [timezone] => +02:00 
) 

birthdateतारीख:

DateTime Object 
(
    [date] => 1970-01-01 00:00:00 
    [timezone_type] => 3 
    [timezone] => Europe/Berlin 
) 

मैं उसी तरह से मेरी वस्तुओं फ़ॉर्मेट करना होगा। दोनों में timezone_type=3 होना चाहिए।

मैं इसे कैसे प्राप्त कर सकता हूं?

+1

'date_timezone_set (DATETIME $ वस्तु, DateTimeZone $ समय क्षेत्र)' – DevZer0

+0

कोड आप का प्रस्ताव केवल समय क्षेत्र सेट करता है। उपरोक्त सूची में, टाइमज़ोन समान हैं, लेकिन वे अलग-अलग प्रस्तुत किए जाते हैं। – lilly

+0

आप का उपयोग करते हैं '$ mytime-> setTimezone (नई DateTimezone ('यूरोप/बर्लिन'))' (या जो भी) हर एक पर, परिणाम होगा कि वे एक ही तरह से प्रस्तुत कर रहे हैं। – Jerry

उत्तर

47

समय क्षेत्र दिनांक समय वस्तुओं में तीन अलग-अलग प्रकार के हो सकते हैं:

  • प्रकार 1; एक यूटीसी ऐसे में new DateTime("17 July 2013 -0300");
  • टाइप 2 के रूप में, ऑफसेट; ऐसे में new DateTime("17 July 2013", new DateTimeZone("Europe/London"));

केवल दिनांक समय प्रकार 3 संलग्न डीएसटी के लिए सही ढंग से की अनुमति देगा समय क्षेत्रों के साथ वस्तुओं के रूप में एक समय क्षेत्र पहचानकर्ता,: इस तरह में new DateTime("17 July 2013 GMT");

  • प्रकार 3 के रूप में एक समय क्षेत्र संक्षिप्त नाम,।

    हमेशा टाइप 3 रखने के लिए आपको this list से स्वीकार्य पहचानकर्ता के रूप में अपने डेटाबेस में टाइमज़ोन स्टोर करने की आवश्यकता होगी और इसे तत्काल पर अपने डेटटाइम ऑब्जेक्ट पर लागू करें।

  • +0

    खैर .. मैं डेटाबेस में इस प्रकार के 3 समय क्षेत्र की दुकान है। एक समस्या यह प्रतीत होती है कि Doctrine2 उन भिन्न टाइमज़ोन प्रकारों को लौटाता है (यहां तक ​​कि जब मैं स्पष्ट रूप से \ DateTimeZone ("यूरोप/लंदन") के रूप में टाइमज़ोन पास करता हूं)। मुझे नहीं लगता कि मैं इस प्रकार मैं पहले से ही उपभोक्ता वर्ग के साथ सरल टाइम स्टांप का उपयोग करने के दिनांक स्वरूपण करने के लिए फैसला किया Doctrine2 व्यवहार को संशोधित करने के लिए आसान पहुँच है। या शायद मैंने कुछ अनजान छोड़ा है? क्या आपने कभी डेटटाइम ऑब्जेक्ट्स पर Doctrine2 + Postgres से काम किया है और इसे काम किया है? – lilly

    +0

    क्षमा करें, मैंने कभी भी सिद्धांत का उपयोग नहीं किया है, मैं ओआरएम का प्रशंसक नहीं हूं, लेकिन मैंने [सिद्धांत डीबीएएल] का उपयोग किया है (http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest /index.html) और कभी भी आपके मुद्दे पर नहीं आते क्योंकि मैं अपने डेटा पर नियंत्रण बनाए रखता हूं और इसका उपयोग कैसे किया जाता है। – vascowhite

    +0

    एक अलग ओआरएम के साथ एक ही समस्या होने के कारण, मुझे पता चला कि 'नया = नया दिनांक समय(); $ new-> setTimestamp ($ old-> getTimestamp()); चाल बहुत ही बदसूरत है, हालांकि चाल है। इसे सेटर्स में शामिल करना दर्द को आसान बनाता है। –

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