2016-08-29 5 views
5

मुझे डेटाबेस में सहेजी गई तारीख के लिए सही यूनिक्स टाइमस्टैम्प को प्रतिबिंबित करने में समस्या हो रही है।स्ट्रेटोटाइम और दिनांक सही ढंग से आउटपुट नहीं कर रहा है

$activeWorkRow['WorkDate'] = "9/24/2015 1:45:53 PM"; 
$locateDate = $activeWorkRow['WorkDate']; 
$locateDate = str_replace('/', '-', $locateDate); 
//$locateDate = date('m-d-Y', strtotime($locateDate)); 
//$locateDate = strtotime(date($locateDate)); 

echo $locateDate."<br>"; 

आउटपुट:

9-24-2015 1:45:53 PM 

अगला:

$locateDate = $activeWorkRow['WorkDate']; 
$locateDate = str_replace('/', '-', $locateDate); 
$locateDate = date('m-d-Y', strtotime(locateDate)); 
//$locateDate = strtotime(date($locateDate)); 

आउटपुट:

12-31-1969 

मैं तो मैं दूसरों के साथ तुलना कर सकते हैं यूनिक्स टाइमस्टैम्प को पाने के लिए कोशिश कर रहा हूँ ।

+0

क्या समयक्षेत्र? –

+0

सेंट्रल समय क्षेत्र –

उत्तर

0

क्या आप MySQL का उपयोग कर रहे हैं, तो कह सकते हैं:

mysql> का चयन करें UNIX_TIMESTAMP();

<?php 
$hostname="your_hostname"; 
$username="your_username"; 
$password="your_password"; 
$db = "your_dbname"; 
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password); 
foreach($dbh->query('SELECT UNIX_TIMESTAMP()') as $row) { 
    echo "<tr>"; 
    echo "<td>" . $row['UNIX_TIMESTAMP()'] . "</td>"; 
    echo "</tr>"; 
} 
?> 

या आप एक निर्धारित तिथि कोशिश के लिए यूनिक्स स्टाम्प समय की जरूरत है:

mysql> का चयन करें UNIX_TIMESTAMP ('2016/01/01 00:00:00');

<?php 
$hostname="your_hostname"; 
$username="your_username"; 
$password="your_password"; 
$db = "your_dbname"; 
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password); 
foreach($dbh->query('SELECT UNIX_TIMESTAMP("2016-01-01 12:00:00")') as $row) { 
    echo "<tr>"; 
    echo "<td>" . $row['UNIX_TIMESTAMP("2016-01-01 12:00:00")'] . "</td>"; 
    echo "</tr>"; 
} 
?> 
+0

में अपने सर्वर है यह varchar का उपयोग करने और संग्रह किया गया है समय-समय पर नहीं।मुझे लगता है कि मुझे –

+0

आउटपुट के बजाय 0 क्यों मिलता है, आप इस फ़ंक्शन में वर्कर इनपुट कर सकते हैं: UNIX_TIMESTAMP ($ सक्रिय वर्करो ['वर्कडेट'] चुनें) –

+0

$ टाइमस्टैम्प = स्ट्रेटोटाइम ($ mysqltime); गूंज दिनांक ("वाई-एम-डी एच: आई: एस", $ टाइमस्टैम्प); –

2

आपकी समस्या str_replace('/', '-', $locateDate); है। आपकी तिथि m/d/y के रूप में दी गई है और उस प्रतिस्थापन के साथ आप इसे m-d-y पर परिवर्तित कर रहे हैं।

लेकिन strtotime- यूरोपीय d-m-y प्रारूप के सूचक के रूप में व्यवहार करता है। और उस प्रारूप में, 9/24/2015 मान्य दिनांक नहीं है, जो आपके मनाए गए आउटपुट को जन्म देता है (जो date('m-d-Y', 0) के बराबर है)।

$activeWorkRow['WorkDate'] = "9/24/2015 1:45:53 PM"; 
$locateDate = $activeWorkRow['WorkDate']; 
echo strtotime($locateDate); 

आउटपुट::

1443116753 

सी एफ

सीधे शब्दों में str_replace छोड़ अधिक जानकारी के और प्रतिवाद के लिए the manual: मीटर में

तिथियां/दि/व या DMY प्रारूपों विभिन्न घटकों के बीच विभाजक को देखकर disambiguated कर रहे हैं: यदि विभाजक एक स्लैश (/) है, तो अमेरिकी एम/डी/वाई माना जाता है; जबकि विभाजक एक डैश (-) या एक बिंदु (।) है, तो यूरोपीय डी-एम-वाई प्रारूप माना जाता है। दिनांक स्ट्रिंग ymd के रूप में पार्स किया जाता है,

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

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