PHP

2009-07-02 6 views
5

में दिनांक/समय के बीच अंतर की गणना करें मेरे पास दिनांक वस्तु (नाशपाती से) है और सेकंड में समय अंतर प्राप्त करने के लिए एक और दिनांक वस्तु घटाएं।PHP

मैंने कुछ चीजों की कोशिश की है लेकिन पहले मैंने मुझे दिनों में अंतर दिया है, और दूसरा मुझे एक निश्चित समय को यूनिक्स टाइमस्टैम्प में बदलने की अनुमति देगा, लेकिन डेट ऑब्जेक्ट नहीं।

 $now = new Date(); 
     $tzone = new Date_TimeZone($timezone); 
     $now->convertTZ($tzone); 
     $start = strtotime($now); 
     $eob = strtotime("2009/07/02 17:00"); // Always today at 17:00 

     $timediff = $eob - $start; 

** ध्यान दें ** यह हमेशा 24 घंटे से कम का अंतर हो जाएगा।

+0

$ के उत्पादन में प्रारूप अब स्ट्रिंग आप strtotime में फ़ीड के रूप में ही है()? यानी "yyyy/mm/dd h: i" – Mathew

+1

शायद यह केवल मुझे है लेकिन मैं PHP दस्तावेज़ में "दिनांक" कक्षा के लिए विवरण नहीं ढूंढ पा रहा हूं। यह किस पुस्तकालय से है? –

+0

आप उनमें से केवल एक को टाइमज़ोन में क्यों परिवर्तित करते हैं? क्या आप या तो टीजेड पर स्थानीय समय या दोनों के रूप में दोनों का उपयोग नहीं करना चाहिए? –

उत्तर

1

फिर भी कुछ हद तक गलत मान दिया था, लेकिन मैं चारों ओर नाशपाती की तारीख के एक पुराने संस्करण है को देखते हुए, शायद यह आप के लिए काम करता है या आप :)

ठीक करने के लिए कैसे पर एक संकेत देता है
<pre> 
<?php 
    require "Date.php"; 

    $now = new Date(); 
    $target = new Date("2009-07-02 15:00:00"); 

    //Bring target to current timezone to compare. (From Hawaii to GMT) 
    $target->setTZByID("US/Hawaii"); 
    $target->convertTZByID("America/Sao_Paulo"); 

    $diff = new Date_Span($target,$now); 

    echo "Now (localtime): {$now->format("%Y-%m-%d %H:%M:%S")} \n\n"; 
    echo "Target (localtime): {$target->format("%Y-%m-%d %H:%M:%S")} \n\n"; 
    echo $diff->format("Diff: %g seconds => %C"); 
?> 
</pre> 
0

क्या आप सुनिश्चित हैं कि पियर डेट ऑब्जेक्ट का रूपांतरण -> स्ट्रिंग -> टाइमस्टैम्प विश्वसनीय रूप से काम करेगा?

$start = strtotime($now); 

एक विकल्प के रूप में आप documentation

$start = $now->getTime(); 
0

के अनुसार नाशपाती के बिना यह करने के लिए, 17 तक सेकंड 'खोजने के लिए इस तरह टाइमस्टैम्प मिल सकता है: यह यहाँ क्या किया जा रहा है: 00 आप कर सकते हैं:

$current_time = mktime(); 
$target_time = strtotime (date ('Y-m-d'. ' 17:00:00')); 
$timediff = $target_time - $current_time; 

इसका परीक्षण नहीं किया गया है, लेकिन आपको जो चाहिए वह करना चाहिए।

0

मुझे नहीं लगता कि आपको पूरे डेट ऑब्जेक्ट को स्ट्रेटोटाइम में पास करना चाहिए। इसके बजाय इनमें से एक का उपयोग करें;

$start = strtotime($now->getDate()); 

या

$start = $now->getTime(); 
0

शायद कुछ लोग फेसबुक के समय में अंतर चाहते हैं। यह आपको बताता है "एक मिनट पहले", या "2 दिन पहले", आदि ... यहाँ मेरी कोड है:

function getTimeDifferenceToNowString($timeToCompare) { 

     // get current time 
     $currentTime = new Date(); 
     $currentTimeInSeconds = strtotime($currentTime); 
     $timeToCompareInSeconds = strtotime($timeToCompare); 

     // get delta between $time and $currentTime 
     $delta = $currentTimeInSeconds - $timeToCompareInSeconds; 

     // if delta is more than 7 days print the date 
     if ($delta > 60 * 60 * 24 *7) { 
      return $timeToCompare; 
     } 

     // if delta is more than 24 hours print in days 
     else if ($delta > 60 * 60 *24) { 
      $days = $delta/(60*60 *24); 
      return $days . " days ago"; 
     } 

     // if delta is more than 60 minutes, print in hours 
     else if ($delta > 60 * 60){ 
      $hours = $delta/(60*60); 
      return $hours . " hours ago"; 
     } 

     // if delta is more than 60 seconds print in minutes 
     else if ($delta > 60) { 
      $minutes = $delta/60; 
      return $minutes . " minutes ago"; 
     } 

     // actually for now: if it is less or equal to 60 seconds, just say it is a minute 
     return "one minute ago"; 

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

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