2013-11-20 2 views
1

Это, может быть, очень простой вопрос, но я нашел немного сложнее, так как я все еще новичок в PHP.Как получить другую дату с таким же временем

Предположительно у меня есть:

$time1 = strtotime("today 15:00:00-05:00"); 

Это просто пример, $time1 динамична во время выполнения и может быть любое значение, я хотел бы создать новую $time2, которая имеет значение:

$time2 = strtotime("this thursday 15:00:00-05:00"); 

Обратите внимание, что здесь $time1 и $time2 имеют одинаковые 15:00:00-05:00 и только разные в день. Таким образом, для развала, у меня есть два входа:

  1. $time1 который динамичен во время работы.
  2. строка this thursday.

Как создать $time2 со значением, как указано выше.

+0

Вы хотите объединить две строки? –

ответ

1

Найти разницу между "сегодня" и "сегодня 15: 00: 00-05: 00" и добавить его в "этот четверг"

$sometime = "today 15:00:00-05:00"; 
$time1 = strtotime($sometime); 
// now find only the hour part 
$time = mktime(0,0,0, date('n', $time1), date('j', $time1), date('Y', $time1)); 
$time_difference = $time1 - $time; 
$time2 = strtotime("this thursday") + $time_difference; 

Или еще проще:

$sometime = "today 15:00:00-05:00"; 
$time1 = strtotime($sometime); 
// now find only the hour part 
$hour_string = date('h:i:s', $time1); 
$time2 = strtotime("this thursday $hour_string"); 
+0

Этот подход для меня немного сложный, но он работает, спасибо. Есть ли более простое решение? –

+0

Ну, используя функцию date(), вы можете скомпилировать часовую часть этого четверга .... Я отредактирую ответ –

+0

Второй подход не работает, он получает другое значение –

0

интересно, почему вы не используете DateTime объект PHP с самого начала, но нормально:

$dateTime = new DateTime($time1); 
$dateTime->modify('+1 day'); 
$time2 = $dateTime->getTimestamp(); 

Где можно изменить от 1 до любого количества дней.

+0

Поскольку $ time является динамическим, я действительно не знаю, сколько дней отличается, поэтому мы не знаем +1 здесь –

+1

Итак, что вы знаете? Это на этой неделе в четверг, даже если сегодня пятница, или это в следующий четверг, или что? Пожалуйста уточни. – Alexander

+0

$ time - всего лишь пример, $ time1 - это всего лишь ввод и может быть любым значением, которое мы не знаем. –

0

Как я понимаю, что вы хотите, чтобы Concat в две строки "в этот четверг" и "15: 00: 00-05: 00":

$str1 = "this thursday"; 
$str2 = "15:00:00-05:00"; 

$time = strtotime($str1." ".$str2); 
+0

Ну, это не так, потому что вы не знаете время через строку, это динамично –

0

Вы можете попробовать это. И вам нужно указать больше, если оно не соответствует требованию.

$time1 = date("Y-m-d H:i:s"); 
$time2 = 'this thrusday '; 
$time2 .= $time1; 
$time2 = strtotime($time2); 
Смежные вопросы