Ver Mensaje Individual
  #3 (permalink)  
Antiguo 24/06/2017, 16:27
alejandromaringomez
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Información entre dos fechas

Hola alvaro_trewhela ,

Mil gracias por el código, lo he probado, pero mientras no habían mensajes he estado a ver si se me ocurría algo y he conseguido pensar lo siguiente, te lo adjunto, pero tengo un problema, si restas con alguna web ambas fechas, te sale una diferencia de 20 días menos, supongo que el fallo está en el bucle pero no sé solucionarlo, a ver si supieras, porque creo que este es algo más simple y con este ya me podría valer:

Código:
<?php

	$seasons = array();
	$seasons['low']['days'] = 0;
	$seasons['half']['days'] = 0;
	$seasons['high']['days'] = 0;

	$recogida = '2017-06-10';
	
	$devolucion = '2018-07-20';
	
	$price = 500;
	
	/* Anade dias uno a uno entre las dos fechas a un array en una variable */
	
	$difference = date_diff(date_create($recogida), date_create($devolucion));
	
	for($now = 0; $now <= $difference->format('%a'); $now++) {
		
		$timestamp = strtotime($recogida . '+ ' . $now . ' day');
		
		/* Format: Ymd */
		
		$day = date('Ymd', $timestamp);
		
		if((date('Y0106', $timestamp) <= $day && $day <= date('Y0315', $timestamp)) or (date('Y1101', $timestamp) <= $day && $day <= date('Y1215', $timestamp))) {
			
			$seasons['low']['days']++;
			
		} else if ((date('Y0316', $timestamp) <= $day && $day <= date('Y0630', $timestamp)) or (date('Y1216', $timestamp) <= $day && $day <= date('Y0105', $timestamp))) {
			
			$seasons['half']['days']++;
			
		} else if (date('Y0701', $timestamp) <= $day && $day <= date('Y1031', $timestamp)) {
			
			$seasons['high']['days']++;
			
		}
		
	}
	
	/* Sumar y mostrar */
	
	echo '<b>' . $recogida . ' / ' . $devolucion . '</b><br>';
	echo '<b>Precio base:</b> ' . $price . '$<br>';
	
	if($seasons['low']['days']) {
		
		$price = $price + ($seasons['low']['days'] * 2);
		
		echo 'Con suplemento temporada <b>baja</b>: ' . $price . '$ (' . $seasons['low']['days'] . ' dias a 2$) (Suplemento: ' . $seasons['low']['days'] * 2 . '$)<br>';
		
	}
	
	if($seasons['half']['days']) {
		
		$price = $price + ($seasons['half']['days'] * 4);
		
		echo 'Con suplemento temporada <b>media</b>: ' . $price . '$ (' . $seasons['half']['days'] . ' dias a 4$) (Suplemento: ' . $seasons['half']['days'] * 4 . '$)<br>';
		
	}
	
	if($seasons['high']['days']) {
		
		$price = $price + ($seasons['high']['days'] * 6);
		
		echo 'Con suplemento temporada <b>alta</b>: ' . $price . '$ (' . $seasons['high']['days'] . ' dias a 6$) (Suplemento: ' . $seasons['high']['days'] * 6 . '$)<br>';
		
	}
	
	echo '<b>Total:</b> ' . $price . '$';
Gracias de verdad por tu tiempo un abrazo :)