2016-11-03 3 views
-1

Я пытаюсь добавить две недели к итогу sql, который возвращается как 16/11/2016. Когда я делаю что-то вродеДобавление двух недель php

$twoweeks = strtotime($time_db); 

$expiry_date = $twoweeks; 
$date = strtotime($expiry_date); 
$date = strtotime("+14 day", $date); 
echo date('d/m/y', $date); 

Я продолжаю получать 15/01/70 ... любые идеи?

+0

Причины вы получаете 15/01/1970, потому что вы добавляете две недели до начала времени, или, скорее, эпоху UNIX. Где-то ваша метка времени назначается как 0. – Progrock

+0

теперь у вас много ответов, попробуйте их – devpro

+1

Вам нужно привыкнуть [принимать ответы] (http://meta.stackexchange.com/questions/5234/how-does- прием-ответ-работа), которые помогут вам решить ваши проблемы. Вы будете зарабатывать очки, а другие будут рады помочь вам. –

ответ

2

Вы сделали ошибку в строке 4, поставив номер переменной в качестве первого параметра strtotime. strtotime ожидает строку правильного формата даты/времени в качестве первого параметра, иначе он возвращает FALSE.

Как я думаю, что ваш код должен быть:

$twoweeks = strtotime($time_db); 
$date = strtotime("+ 2 weeks", $twoweeks); 
echo date('d/m/y', $date); 

Или, может быть, даже:

echo date('d/m/y', strtotime($time_db . ' + 2 weeks')); 
1

Вы можете использовать

$numberOfWeeks = 2; 

$newTime = strtotime($time_db) + ($numberOfWeeks * 60 * 60 * 24 * 7); 

или вы можете сделать прямо в (MySQL) выберите

select date_add(your_column, INTERVAL 2 WEEK) from my_table; 
+0

Я все еще получаю 15/01/1970. Где 1970 года? – user3080562

+0

Вы uisng php или mysql? .. и $ time_db - дата или строка? .. вы получаете 1/1/1970, потому что вы time_db не являются допустимой датой, а затем добавляете 2 недели, которые вы получаете 15/1/1970 – scaisEdge

2

То, что здесь происходит, что ваш 16/11/2016 в день-месяц-год, и косые являются проблемой.

Если бы ваша дата была 11/16/2016, вы бы обнаружили, что все было бы в порядке.

Вам необходимо их преобразовать или заменить на тире/дефисы.

$time_db = "16/11/2016"; 
$time_db = str_replace('/', '-', $time_db); 

$two_weeks_later = date('d-m-Y',strtotime($time_db . "+14 days")); 
// or display as Year-month-day 
// $two_weeks_later = date('Y-m-d',strtotime($time_db . "+14 days")); 

echo $two_weeks_later; 

При работе с датами (и времени), то лучше использовать встроенные в MySQL функции даты/времени, а не хранить их в виде обычного текста; это намного меньше проблем и намного проще при запросе.

Ссылка:

1
$date = date('Y-m-d H:i:s',time()); 
    $date = strtotime($date); 
    $date = strtotime("+14 day", $date); 
    $valuedate= date('Y-m-d H:i:s',$date); 

Попробуйте