php - XPath select dates after timezone conversion -


निम्न xml के साथ

  & lt; SomeData & gt; & Lt; MyData यूआईडी = "123456" & gt; & Lt; MyInfo ए = "1" बी = "2" सी = "3" & gt; & Lt; दिनांक & gt; 2011-10-02 00: 30: 00 & lt; / दिनांक & gt; & Lt; / MyData & gt; & Lt; MyData यूआईडी = "123456" & gt; & Lt; MyInfo ए = "1" बी = "2" सी = "3" & gt; & Lt; दिनांक & gt; 2011-10-01 00: 30: 00 & lt; / तिथि & gt; & Lt; / MyData & gt; & LT; SomeData & gt;   

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

अर्थात अगर मैं 2011-10-01 को तारीखों की तलाश कर रहा था लेकिन जीएमटी -5 के लिए मुझे पहली तारीख चुनने के लिए एक्सपैथ की आवश्यकता होगी और दूसरा नहीं।

मैं PHP का उपयोग कर रहा हूं और मेरा कोड वर्तमान में इस तरह है, लेकिन यह अभी तक कोई दिनांक नहीं बदलता है।

  $ परिणाम = $ this- & gt; myxml- & gt; xpath ("// कुछ डेटा [मायडाटा / दिनांक [प्रारंभ-शुरू (।, '"। $ खोजडेट। "')]]") ;   

उम्मीद है कि समझ में आता है।

डेटा प्रकार का हिस्सा नहीं है XPath 1.0 डेटा मॉडल का और समय क्षेत्र रूपांतरण के लिए एल्गोरिदम जटिल है (मान लें कि आपको इसे मानक SQL में करना होगा!)।

मेरी सलाह : XPath 2.0 इंजन में अपग्रेड

अवधारणा के सबूत के रूप में, यह स्टाइलशीट:

  & lt; xsl: स्टाइलशीट संस्करण = "2.0" xmlns: xsl = "http://www.w3.org/ 1999 / एक्सएसएल / ट्रांसफ़ॉर्म "एक्सएमएलएनएस: एक्सएस =" http://www.w3.org/2001/XMLSchema "& gt; & Lt; xsl: टेम्पलेट मैच = "/" & gt; & Lt; xsl: copy-of select = "/ SomeData / MyData / तिथि [xs: dateTime (।) & Gt; = xs: dateTime ('2011-10-01T00: 00: 00-05: 00') और एक्सएस: डेटटाइम ('2011-10-02T00: 00: 00-05: 00')> gt; दिनांक: समय (।)] "/> & Lt; / XSL: टेम्पलेट & gt; & Lt; / XSL: स्टाइलशीट & gt;   

इस अच्छी तरह से बनाई गई इनपुट के साथ:

  & lt; SomeData & gt; & Lt; MyData यूआईडी = "123456" & gt; & Lt; MyInfo ए = "1" बी = "2" सी = "3" / & gt; & LT; दिनांक & gt; 2011-10-02T00: 30: 00 & lt; / दिनांक & gt; & Lt; / MyData & gt; & Lt; MyData यूआईडी = "123456" & gt; & Lt; MyInfo ए = "1" बी = "2" सी = "3" / & gt; & LT; दिनांक & gt; 2011-10-01T00: 30: 00 & lt; / दिनांक & gt; & Lt; / MyData & gt; & Lt; / SomeData & gt;   

आउटपुट:

  & lt; दिनांक & gt; 2011-10-02T00: 30: 00 & lt; / दिनांक & gt;    

Comments