start session_start online ejemplos day php date time strtotime

php - session_start - strtotime to date



PHP: cómo verificar si una fecha es hoy, ayer o mañana (7)

Aquí hay una versión más pulida de la respuesta aceptada. Acepta solo marcas de tiempo y devuelve una fecha relativa o una cadena de fecha formateada para todo +/- 2 días

<?php /** * Relative time * * date Format http://php.net/manual/en/function.date.php * strftime Format http://php.net/manual/en/function.strftime.php * latter can be used with setlocale(LC_ALL, ''de_DE@euro'', ''de_DE'', ''deu_deu''); * * @param timestamp $target * @param timestamp $base start time, defaults to time() * @param string $format use date(''Y'') or strftime(''%Y'') format string * @return string */ function relative_time($target, $base = NULL, $format = ''Y-m-d H:i:s'') { if(is_null($base)) { $base = time(); } $baseDate = new DateTime(); $targetDate = new DateTime(); $baseDate->setTimestamp($base); $targetDate->setTimestamp($target); // don''t modify original dates $baseDateTemp = clone $baseDate; $targetDateTemp = clone $targetDate; // normalize times -> reset to midnight that day $baseDateTemp = $baseDateTemp->modify(''midnight''); $targetDateTemp = $targetDateTemp->modify(''midnight''); $interval = (int) $baseDateTemp->diff($targetDateTemp)->format(''%R%a''); d($baseDate->format($format)); switch($interval) { case 0: return (string) ''today''; break; case -1: return (string) ''yesterday''; break; case 1: return (string) ''tomorrow''; break; default: if(strpos($format,''%'') !== false ) { return (string) strftime($format, $targetDate->getTimestamp()); } return (string) $targetDate->format($format); break; } } setlocale(LC_ALL, ''de_DE@euro'', ''de_DE'', ''deu_deu''); echo relative_time($weather->time, null, ''%A, %#d. %B''); // Montag, 6. August echo relative_time($weather->time, null, ''l, j. F''); // Monday, 6. August

Me gustaría comprobar si hay una fecha hoy, mañana, ayer o de lo contrario. Pero mi código no funciona.

Código:

$timestamp = "2014.09.02T13:34"; $date = date("d.m.Y H:i"); $match_date = date(''d.m.Y H:i'', strtotime($timestamp)); if($date == $match_date) { //Today } elseif(strtotime("-1 day", $date) == $match_date) { //Yesterday } elseif(strtotime("+1 day", $date) == $match_date) { //Tomorrow } else { //Sometime }

El Código siempre va en el caso else.


Creo que esto te ayudará:

<?php $date = new DateTime(); $match_date = new DateTime($timestamp); $interval = $date->diff($match_date); if($interval->days == 0) { //Today } elseif($interval->days == 1) { if($interval->invert == 0) { //Yesterday } else { //Tomorrow } } else { //Sometime }


No hay funciones incorporadas para hacer eso en Php (shame ^^). Si desea comparar una cadena de fecha con la fecha actual, puede usar un substr sencillo para lograrlo:

if (substr($timestamp, 0, 10) === date(''Y.m.d'')) { today } elseif (substr($timestamp, 0, 10) === date(''Y.m.d'', strtotime(''-1 day'')) { yesterday }

Sin conversión de fecha, simple.


Pase la fecha a la función.

<?php function getTheDay($date) { $curr_date=strtotime(date("Y-m-d H:i:s")); $the_date=strtotime($date); $diff=floor(($curr_date-$the_date)/(60*60*24)); switch($diff) { case 0: return "Today"; break; case 1: return "Yesterday"; break; default: return $diff." Days ago"; } } ?>


Primero. Usted tiene un error al usar la función strtotime ver la documentación de PHP

int strtotime ( string $time [, int $now = time() ] )

Necesita modificar su código para pasar la indicación de fecha y hora entera a esta función.

Segundo. Utiliza el formato dmY H: i que incluye la parte de tiempo. Si desea comparar solo las fechas, debe eliminar la parte de tiempo, por ejemplo `$ date = date (" dmY ");` `

Tercero. No estoy seguro si funciona de la misma manera para usted, pero mi PHP no comprende el formato de fecha de $timestamp y devuelve 01.01.1970 02:00 en $match_date

$timestamp = "2014.09.02T13:34"; date(''d.m.Y H:i'', strtotime($timestamp)) === "01.01.1970 02:00";

strtotime($timestamp) comprobar si strtotime($timestamp) devuelve la cadena de fecha correcta. Si no, debe especificar el formato que se utiliza en la variable $timestamp . Puede hacerlo usando una de las funciones date_parse_from_format o DateTime::createFromFormat

Este es un ejemplo de trabajo:

$timestamp = "2014.09.02T13:34"; $today = new DateTime(); // This object represents current date/time $today->setTime( 0, 0, 0 ); // reset time part, to prevent partial comparison $match_date = DateTime::createFromFormat( "Y.m.d//TH:i", $timestamp ); $match_date->setTime( 0, 0, 0 ); // reset time part, to prevent partial comparison $diff = $today->diff( $match_date ); $diffDays = (integer)$diff->format( "%R%a" ); // Extract days count in interval switch( $diffDays ) { case 0: echo "//Today"; break; case -1: echo "//Yesterday"; break; case +1: echo "//Tomorrow"; break; default: echo "//Sometime"; }


<?php $current = strtotime(date("Y-m-d")); $date = strtotime("2014-09-05"); $datediff = $date - $current; $difference = floor($datediff/(60*60*24)); if($difference==0) { echo ''today''; } else if($difference > 1) { echo ''Future Date''; } else if($difference > 0) { echo ''tomarrow''; } else if($difference < -1) { echo ''Long Back''; } else { echo ''yesterday''; } ?>


function getRangeDateString($timestamp) { if ($timestamp) { $currentTime=strtotime(''today''); // Reset time to 00:00:00 $timestamp=strtotime(date(''Y-m-d 00:00:00'',$timestamp)); $days=round(($timestamp-$currentTime)/86400); switch($days) { case ''0''; return ''Today''; break; case ''-1''; return ''Yesterday''; break; case ''-2''; return ''Day before yesterday''; break; case ''1''; return ''Tomorrow''; break; case ''2''; return ''Day after tomorrow''; break; default: if ($days > 0) { return ''In ''.$days.'' days''; } else { return ($days*-1).'' days ago''; } break; } } }