Санкционировать ранг дат в php или jquery

Как я могу обусловливать в PHP 5 (или jquery), если я внутри ранга дат? Например я хочу обусловить ранг дат, Если эта внутри ранга посылать сообщение "В течение Периода" В противоположном случае "Вне Периода"

Случай состоит в том, что даты, которую я хочу санкционировать, 20-12-2001, и хочу знать, ли он в течение периода с 2016 до 2017

Пример: 20-12-2001 из 20-12-2015 в 2016 "Вне Периода"; 20-12-2016 в 2017 "В течение Периода"

Спасибо.

3
задан 26.12.2016, 21:31
0 ответов

Я буду предлагать тебе два возможных решения с PHP.

Когда ты всегда используешь тот же формат даты

Если твои даты всегда - в формате в день - mes-año, ты можешь использовать функцию explode PHP, чтобы получать год и реализовывать условие:

$fecha = "20-12-2001";
$fechaDividida = explode("-", $fecha);
$anno = $fechaDividida[2];

if ($anno >= 2016 && $anno <=2017){
    echo "Está dentro del periodo";
}else{
    echo "Está fuera del periodo";
}

Он возвратит тебя Está fuera del periodo для этого конкретного случая.

Когда ты используешь различные форматы даты

В этом случае ты можешь использовать функцию strtotime вместе с функцией date чтобы получать год и после сравнивать это, чтобы видеть, ли он внутри ранга:

$fecha = "20-12-2001";
$anno = date('Y', strtotime($fecha));

if ($anno >= 2016 && $anno <=2017){
    echo "Está dentro del periodo";
}else{
    echo "Está fuera del periodo";
}

Он возвратит тебя Está fuera del periodo для этого конкретного случая.

В вышеупомянутом случае ты мог бы использовать $fecha = "2001-12-20"; и он дал бы тебе тот же результат. Даже $fecha = "2001/12/20"; или $fecha = "20/12/2001"; и результат был бы тем же самым.

3
ответ дан 03.12.2019, 17:58
  • 1
    Совершенный и большое спасибо. Одна консультируется больше. Если я хочу узнать, что только в день и в месяце они были в течение периода 2016 и 2017 ¿ Как я извлекаю эту информацию? –  26.12.2016, 21:58
  • 2
    @JuanPabloBustamanteLuna ты должен помечать как правильно твой вопрос –  26.12.2016, 22:00
  • 3
    @JuanPabloBustamanteLuna ¿ Который ты имеешь в виду несмотря на то, что знаешь, что только dí в и месяц esté n внутри perí odo 2016 и 2017? Действительно, если añ или está внутри этого ранга тогда dí в и безопасный месяц, что está n в вышеупомянутом ранге. –  26.12.2016, 22:03
  • 4
    Другая opció n serí чтобы использовать preg_split и использовать одну RegExp, с возможными разделителями –  26.12.2016, 22:03
  • 5
    @MarcosGallardo Sí но в этом случае я utilizarí во вторую opció n, чтобы не быть должным быть показывая каждый из возможных разделителей. –  26.12.2016, 22:05

Ты можешь использовать класс DateTime и доставать с ->format("Y") год и так подтверждать даты:

$fecha1 = new DateTime('20-12-2001');
$fecha1 = $fecha1->format("Y"); //=> 2001
$fecha2 = new DateTime('20-12-2016');
$fecha2 = $fecha2->format("Y"); //=> 2016

$fechaInicio = new DateTime('20-12-2015');
$fechaInicio = $fechaInicio->format("Y"); //=> 2015
$fechaFin = new DateTime('01-01-2017');
$fechaFin = $fechaFin->format("Y");  //=> 2017

// Creamos una función para comprobar las fechas si están en el rango
function comprobarFecha($fecha, $fechaInicio, $fechaFin) {

    return $fecha >= $fechaInicio && $fecha <= $fechaFin;
}

// FECHA 1: 2001
if (comprobarFecha($fecha1, $fechaInicio, $fechaFin)) {

    echo 'Esta dentro del periodo';

} else {

    echo 'Esta fuera del periodo'; // <= Resultado
}    

// FECHA 2: 2016
if (comprobarFecha($fecha2, $fechaInicio, $fechaFin)) {

    echo 'Esta dentro del periodo'; // <= Resultado

} else {

    echo 'Esta fuera del periodo';
}

Видеть Demo

0
ответ дан 03.12.2019, 17:58
  • 1
    Спасибо @aldanux Также он мне был полезен –  27.12.2016, 20:32

Теги

Похожие вопросы