2013-09-27 2 views
3

У меня проблема, когда я хочу рассчитать дату. Простой пример:php как сделать операцию на дату

У меня есть 2013-09-01 - дата начала, и у меня есть 30 дней в месяц. Моя работа мне нужна, чтобы сообщить моему пользователю за 10 дней до конца месяца (это означает, что на 2013-09-20 я должен предупредить сообщение it's 10day more for end of this month). Поэтому у каждого есть какая-то идея помочь рассчитать его. becuese i нравится невозможно (+, -, *,/) на дату. Теперь я некоторые данные, такие как

<?php 
    date_default_timezone_set('Asia/Phnom_Penh'); 
    $current = time(); 
    $start = 1380188957; 
    echo 'Start date: '. date('Y-m-d', $start) ."\n"; 
    echo '<br/>'; 
    $repeat = 30; 
    $enddate = time() + ($repeat * 24 * 60 * 60); 
    echo 'end date: '. date('Y-m-d', $enddate) ."\n"; 

Спасибо, что пришло за помощью.

+0

Для моей концепции: Я хочу объявить '$ current' в' 'sub' с $ start', если он 'меньше или Equuleus (<=)' 20, я вышлю сообщение – koe

+0

Эй, время. Кто-нибудь из ответов разрешил вашу проблему? Если бы вы могли принять один из них. – Jeemusu

ответ

0
$start = 1380188957; 
$enddate = time() + ($repeat * 24 * 60 * 60); 

Это ваш собственный код. Пользуясь тем, что мы можем легко вычислить 10 days before end date

$alert=$enddate-864000; // That's 10 days 
$alertdate=date('Y-m-d', $alert); 
+0

Спасибо вам большое, но мне нужно, чтобы динамический не хотел знать только статические, как это, не могли бы вы рассказать мне, как рассчитать '4400' =' 10day'? – koe

+1

1 день = '24 часа x 60 минут x 60 секунд' = 864000. Теперь, если вам нужно вычислить 6 дней, просто умножьте это на 6, и вы получите ответ. Но интересно то, что это уже часть вашего кода, см. Строку '$ repeat'? что делает то же самое. Извините, я ошибался, пропуская минуты. Просто обновил его –

+0

yes У меня есть шаг для тестирования с '10day, 6day и ...' Спасибо за вашу помощь, я проверю его сейчас – koe

2

Не каждый месяц имеет 31 дней, вы можете получить количество дней в любом месяце, используя t вариант для форматирования строки в date() парам функции PHP.

// Current time as unix timestamp 
$now = time(); 

// Number of days in current month 
$days_this_month = date("t", time()); 

// Last day of the current month as a unix timestamp; 
$end_of_month = strtotime(date("Y-m-t", time())); 

// Ten days before the end of the month as a unix timestamp 
$ten_days = strtotime('-10 days', $end_of_month); 

Теперь мы можем сделать проверку, чтобы увидеть, если он за 10 дней до конца месяца:

if($now > $ten_days) { 

    // Do something 
} 
+0

Очень хороший ответ. +1 –

Смежные вопросы