2011-02-01 15 views
7

मैं संग्रहीत दिनांक कैसे ले सकता हूं, जैसे 2011-01-30 18:23:49, और इसे किसी भी चुने हुए टाइमज़ोन में समायोजित करें? क्या कोई आसान तरीका है जैसे संक्षेप में समय क्षेत्र को परिभाषित करना या एक्स मात्रा को जोड़ना/घटाना? मूल रूप से मैं चाहता हूं कि उपयोगकर्ता अपना समय क्षेत्र चुनने में सक्षम हों और यह डिफ़ॉल्ट तिथि उनके फिट होने के लिए समायोजित की जाए।समय क्षेत्र समायोजित करें

+1

[DATETIME/DateTimeZone साथ PHP में समय क्षेत्र का समायोजन] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/1445087/adjusting-time-zone-in-php-with-datetime-datetimezone) –

उत्तर

7
  1. उपयोगकर्ता अपने समय क्षेत्र

  2. चुनें डिफ़ॉल्ट समय स्क्रिप्ट निष्पादन के बाकी भर तिथि कार्यों में इस्तेमाल किया क्षेत्र निर्धारित करने के date_default_timezone_set साथ कि क्षेत्र का नाम या ऑफसेट का उपयोग करें।

  3. उपयोग date('Z') प्राप्त करने के लिए उस समय क्षेत्र सेकंड

  4. strtotime साथ एक टाइमस्टैम्प के लिए अपने संगृहीत तारीख कन्वर्ट में GMT से ऑफसेट है - यूनिक्स टाइमस्टैम्प हमेशा GMT हैं, इसलिए अब आप जीएमटी में समय है।

  5. उस समय को उपयोगकर्ता के समय क्षेत्र में बदलने के लिए चरण 3 से ऑफ़सेट जोड़ें।

  6. वांछित प्रदर्शन प्रारूप में एक स्ट्रिंग के रूप में टाइमस्टैम्प को प्रारूपित करने के लिए फिर से date का उपयोग करें।

उदाहरण:

$user_timezone = 'America/Los_Angeles'; 
$stored_time = '2011-01-30 18:23:49'; 

date_default_timezone_set($user_timezone); 
$timestamp = strtotime($stored_time); 
$local_timestamp = $timestamp + date('Z'); 
$local_date = date('Y-m-d H:i:s', $local_timestamp); 

echo $local_date; 
0

यहाँ मेरी समाधान आता है। मैंने इसे सर्वर/लॉस_एंजेलस के साथ सर्वर टाइमज़ोन के रूप में और उपयोगकर्ताओं के रूप में अपना टाइमज़ोन के साथ परीक्षण किया। मुझे लगता है कि सर्वर टाइमज़ोन का उपयोग कर समय संग्रहीत किया जाता है।

<?php 
// My (user) timezone 
$user_timezone = 'Europe/Berlin'; 

// Server timezone 
$stored_timezone = 'America/Los_Angeles'; 

// Date/Time stored in your DB, using timezone of the server (yours, that is) 
$stored_datetime = '2011-01-29 22:40:00'; // this is the current time in L.A. 

// Setting default to servers timezone if not done before 
date_default_timezone_set($stored_timezone); 

// converting to unix timestamp 
$stored_timestamp = strtotime($stored_datetime); 

// setting default to users timezone 
date_default_timezone_set($user_timezone); 

// converting to timestamp 
$user_datetime = date('Y-m-d H:i:s', $stored_timestamp); 

// setting default back to servers timezone 
date_default_timezone_set($stored_timezone); 

echo $user_datetime; // output is my current time 
संबंधित मुद्दे