php
  • datetime
  • 2013-08-27 67 views -1 likes 
    -1
    $datetime_from = '2013-08-27 14:17:00'; 
    $datetime_till = date("Y-m-d H:i",strtotime("+45 minutes",$datetime_from)); 
    

    結果是:分鐘添加到時間字符串

    $datetime_till = '1970-01-01 01:00:00' 
    

    預期的結果是

    $datetime_till = '2013-08-27 15:02' 
    

    如何獲得呢?

    +0

    http://stackoverflow.com/questions/8169139/adding-minutes-to-date-time-in-php – mkaatman

    +0

    $ datetime_from是否來自數據庫? – Cups

    回答

    1

    它會像

    $datetime_from = strtotime('2013-08-27 14:17:00'); 
    $datetime_till = date("Y-m-d H:i",strtotime("+45 minutes",$datetime_from)); 
    

    您需要$datetime_from轉換爲時間

    否則容易,你也可以嘗試像(蔭不知道

    $dateTime = DateTime::createFromFormat('m/d/Y h:i', $datetime_from); 
    $datetime_from = $dateTime->format('U'); 
    $datetime_till = date("Y-m-d H:i",strtotime("+45 minutes",$datetime_from)); 
    
    +0

    它提供了相同的答案:1970-01-01 01:45:00 –

    +0

    嘗試我編輯的答還,但我不知道它會 – Gautam3164

    +0

    可能問題是,var_dump($ datetime_from);輸出「'2013-08-27 17:00:00'」 –

    0

    試戴

    $datetime_till = date("Y-m-d H:i",strtotime("+45 minutes",strtotime($datetime_from))); 
    
    0

    您應該使用DateTime類而不是舊的功能性php。

    $dateFrom = new \DateTime('2013-08-27 14:17:00'); 
    $dateTill = new \DateTime('2013-08-27 14:17:00'); 
    $dateTill->modify('+45 minutes'); 
    
    // test if the dates are correct 
    echo $dateFrom->format('Y-m-d H:i:s'). ' - '.$dateTill->format('Y-m-d H:i:s'); 
    

    有許多其他方法可以從DateTime類中受益。

    +0

    此行失敗:$ datetime_till = new DateTime($ datetime_from); –

    +0

    可能問題在於var_dump($ datetime_from);輸出「'2013-08-27 17:00:00'」。但如何解決它? –

    +0

    在DateTime之前添加反斜槓。 $ datetime_from必須是具有有效格式日期的字符串。 –

    0

    您可以使用DateTime對象,爲此在程序風格PHP這樣的:

    $datetime_from = date_create('2013-08-27 14:17:00'); // Create a date object from the start date 
    $datetime_till = date_add($datetime_from, date_interval_create_from_date_string('45 minutes')); // Add the interval to the starting time 
    echo date_format($datetime_till, 'Y-m-d H:i'); // Format the date how you want it to be output 
    

    希望這有助於。

    0
    Use: 
    
    $datetime_from = strtotime('2013-08-27 14:17:00'); 
    
    $datetime_till = date("Y-m-d H:i",$datetime_from+(45*60)); 
    
    0

    使用DateTime日期/時間修改類:

    $datetime_from = new DateTime('2013-08-27 14:17:00'); 
    $datetime_till = clone $datetime_from; 
    $datetime_till->modify('+45 minutes'); 
    
    echo 
        'From: ' . $datetime_from->format('Y-m-d H:i:s') . "\n". 
        'Till: ' . $datetime_till->format('Y-m-d H:i:s'); 
    

    輸出將是:

    From: 2013-08-27 14:17:00 
    Till: 2013-08-27 15:02:00 
    

    有效modify()格式在Date and Time Formats解釋。


    請注意,各種strtotime()示例不日期/時間差計算正確。最簡單的例子是2013-03-31 21:002013-03-30 21:00之間的差異。哪一個肉眼是確切的1天的差異,但如果你減去這2個日期,你會得到82800秒,這是0.95833333333333天。這是因爲從冬季到夏季的時間變化。 DateTime正確處理閏年和時區。

    相關問題