ccc

Mostrando entradas con la etiqueta Fechas y hora. Mostrar todas las entradas
Mostrando entradas con la etiqueta Fechas y hora. Mostrar todas las entradas

Sumar/restar horas, minutos o segundos a la fecha actual

$mifecha = new DateTime();
$mifecha->modify('-5 hours');
$mifecha->modify('+30 minute');
$mifecha->modify('-30 second');
echo $mifecha->format('d-m-Y H:i:s');

Obtener fecha del día anterior

$today = date('y-m-d');
$yest = date('y-m-d',strtotime("-1 days"));

Si no queremos que saque los del fin de semana:
$timestamp = time();
$dayOfWeek = date('D', $timestamp);
if($dayOfWeek == 'Mon') { // es lunes (sacar el del viernes)
     $yest = date('y-m-d',strtotime("-3 days"));
     $today = date('y-m-d',strtotime("-2 days"));
}

Safari: Mostrar formato fecha en Safari

A la hora de componer los dias, meses y años que faltan para un evento en Safari no sale bien, para arreglarlo hay que hacerlo así:

function parseDate(input) {
      var parts = input.match(/(\d+)/g);
      return new Date(parts[0], parts[1]-1, parts[2]);
  }
 
function getTime() {
    fecha_actual = new Date();
    fecha_evento = parseDate("<?=$db->Record['fecha_inicio']?>");
    dias = (fecha_evento - fecha_actual) / 1000 / 60 / 60 / 24;
    dias = Math.floor(dias);
    horas = (fecha_evento - fecha_actual) / 1000 / 60 / 60 - (24 * dias);
    horas = Math.floor(horas);
    minutos = (fecha_evento - fecha_actual) / 1000 /60 - (24 * 60 * dias) - (60 * horas);
    minutos = Math.floor(minutos);
    if (dias < 100) {
        $('.contador_dias').html(("0" + dias).slice (-2));
    } else {
        $('.contador_dias').html(("0" + dias).slice (-3));
    }
    $('.contador_horas').html(("0" + horas).slice (-2));
    $('.contador_minutos').html(("0" + minutos).slice (-2));
    newtime = window.setTimeout("getTime();", 20000);
}

Fechas: mostrar un intervalo de fecha de mes anterior o mes siguiente dependiendo del día en el que estemos

Si es día 25 o superior mostrará de este mes actual más el proximo (sino del mes anterior al actual):
$fecha_inicio = date('j') < 25 ? date('Y-m-25', strtotime('-1 month')) : date('Y-m-25');
$fecha_final = date('j') < 25 ? date('Y-m-25') : date('Y-m-25', strtotime('+1 month'));
echo $fecha_inicio . ' a ' . $fecha_final;

Fechas: distancia entre dos fechas

$fecha1 = date_create('2019-03-11 19:10:01');
$fecha2 = date_create('2019-03-13 20:11:15');
$result = date_diff($fecha1, $fecha2);

echo $result->format('Han sido %a días en total.<br>Han pasado %y años, %m meses, %d días, %H horas, %I minutos, %S segundos.');

Obtener distancia entre fechas

<!DOCTYPE html>
<html>
<head>
    <meta charset="iso-8859-1">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
</head>
<body>
<script>
var calday = "0";
var calmon = "0";
var calyear = "0";
var curday = "0";
var curmon = "0"
var curyear = "0";

$(function() {
$("#btnCalcular").click(function() {
calday = $("#diaInit").val();
calmon = $("#mesInit").val();
calyear = $("#annoInit").val();
curday = $("#diaFinal").val();
curmon = $("#mesFinal").val();
curyear = $("#annoFinal").val();
calage();
});
});

function isNum(arg)
{
var args = arg;

if (args == "" || args == null || args.length == 0)
{
return false;
}

args = args.toString();

for (var i = 0;  i<args.length;  i++)
{
if ((args.substring(i,i+1) < "0" || args.substring(i, i+1) > "9") && args.substring(i, i+1) != ".")
{
return false;
}
}
return true;
}

function checkday(aa)
{
var val = aa.value;
var valc = val.substring(0,1);

if(val.length>0 && val.length<3)
{
if(!isNum(val) || val == 0)
{
aa.value="";
}
else if( val < 1 || val > 31)
{
aa.value=valc;
}
}
else if(val.length>2)
{
val = val.substring(0, 2);
aa.value=val;
}
}

function checkmon(aa) {
var val = aa.value;
var valc = val.substring(0,1);

if(val.length>0 && val.length<3)
{
if(!isNum(val) || val == 0)
{
aa.value="";
}
else if(val < 1 || val > 12)
{
aa.value=valc;
}
}
else if(val.length>2)
{
val = val.substring(0, 2);
aa.value=val;
}
}

function checkyear(aa) {
var val = aa.value;
var valc = val.substring(0,(val.length-1));

if(val.length>0 && val.length<7)
{
if(!isNum(val) || val == 0)
{
aa.value=valc;
}
else if(val < 1 || val>275759)
{
aa.value="";
}
}
else if(val.length>4)
{
aa.value=valc;
}
}

function checkleapyear(datea) {
if(datea.getYear()%4 == 0)
{
if(datea.getYear()% 10 != 0)
{
return true;
}
else
{
if(datea.getYear()% 400 == 0)
return true;
else
return false;
}
}
return false;
}


function DaysInMonth(Y, M) {
    with (new Date(Y, M, 1, 12)) {
      setDate(-2);
      return getDate();
    }
}


function datediff(date1, date2) {
    var y1 = date1.getFullYear(), m1 = date1.getMonth(), d1 = date1.getDate(),
y2 = date2.getFullYear(), m2 = date2.getMonth(), d2 = date2.getDate();
    if (d1 < d2)  {
        m1--;
        d1 += DaysInMonth(y2, m2);
    }
    if (m1 < m2) {
        y1--;
        m1 += 12;
    }
    return [y1 - y2, m1 - m2, d1 - d2];
}

function calage() {
html = "";
if(curday == "" || curmon=="" || curyear=="" || calday=="" || calmon=="" || calyear=="") {
alert("Por favor, rellena todos los campos y vuelve a calcular");
}
else {
var curd = new Date(curyear,curmon-1,curday);
var cald = new Date(calyear,calmon-1,calday);

var diff =  Date.UTC(curyear,curmon-1,curday,0,0,0)- Date.UTC(calyear,calmon-1,calday,0,0,0);

var dife = datediff(curd,cald);
if(checkleapyear(cald)==true) {
// document.cir.val.value = dife[0]+" años, "+dife[1]+" meses, y "+dife[2]+" días";
html += dife[0]+" años, "+dife[1]+" meses, y "+dife[2]+" días";

}else{
// document.cir.val.value = dife[0]+" años, "+dife[1]+" meses, y "+dife[2]+" días";
html += dife[0]+" años, "+dife[1]+" meses, y "+dife[2]+" días";
}
var secleft = diff/1000/60;

var hrsleft = secleft/60;

var daysleft = hrsleft/24;
// document.cir.val1.value=daysleft+" días";
html += "<br>"+daysleft+" dias en total";


var as = parseInt(calyear)+dife[0]+1;
}
$("#zonaShow").html(html);
}

calage();


</script>

<div id="zonaShow"></div>

<p> Día inicial: <input type="text" id="diaInit"></p>
<p> Mes inicial:
<select id="mesInit">
<option value=1>Enero</option>
<option value=2>Febrero</option>
<option value=3>Marzo</option>
<option value=4>Abril</option>
<option value=5>Mayo</option>
<option value=6>Junio</option>
<option value=7>Julio</option>
<option value=8>Agosto</option>
<option value=9>Septiembre</option>
<option value=10>Octubre</option>
<option value=11>Noviembre</option>
<option value=12>Diciembre</option>
</select>
</p>
<p> Año inicial: <input type="text" id="annoInit"></p>
<hr>
<p> Día Final: <input type="text" id="diaFinal"></p>
<p> Mes Final:
<select id="mesFinal">
<option value=1>Enero</option>
<option value=2>Febrero</option>
<option value=3>Marzo</option>
<option value=4>Abril</option>
<option value=5>Mayo</option>
<option value=6>Junio</option>
<option value=7>Julio</option>
<option value=8>Agosto</option>
<option value=9>Septiembre</option>
<option value=10>Octubre</option>
<option value=11>Noviembre</option>
<option value=12>Diciembre</option>
</select>

</p>
<p> Año Final: <input type="text" id="annoFinal"></p>
<p><input type="button" id="btnCalcular" value="Calcular"></p>


</body>
</html>

Fechas: Obtener en la bd una fecha dentro de un periodo

// Saca aquellas empresas que justo dentro de 3 meses tenga la fecha_caducidad
SELECT * FROM empresa WHERE fecha_caducidad = DATE_ADD(curdate(), INTERVAL 3 MONTH)


// Sacar aquellos pedidos cuya fecha sea superior a 3 horas
SELECT id_pedido FROM pedido WHERE estado='pendiente' AND TIME_TO_SEC(TIMEDIFF(NOW(), fecha))>(3*3600)
// Sacar aquellas empresas en las que la fecha actual esté entre la fecha de activación y la fecha de caducidad
select * from empresa where CURDATE() BETWEEN fecha_activacion AND fecha_caducidad
// Sacar diferencia entre días, meses, años, etc entre dos fechas
SELECT DATEDIFF(day, '2014/09/28','2019/05/31') AS diasDif;
SELECT DATEDIFF(month, '2014/09/28','2019/05/31') AS mesesDif;
SELECT DATEDIFF(year, '2014/09/28','2019/05/31') AS annosDif;
// Obtener los años, meses y días que han pasado entre una fecha y la fecha actual
SELECT ( SELECT TIMESTAMPDIFF( YEAR, '2014-09-28', CURDATE( ) ) ) AS ANIOS, ( SELECT ( TIMESTAMPDIFF( MONTH , '2014-09-28', CURDATE( ) ) ) - ( TIMESTAMPDIFF( YEAR, '2014-09-28', CURDATE( ) ) *12 ) ) AS MESES, ( SELECT DATEDIFF( CURDATE( ) , DATE_ADD( DATE_ADD( '2014-09-28', INTERVAL TIMESTAMPDIFF( YEAR, '2014-09-28', CURDATE( ) ) YEAR ) , INTERVAL( TIMESTAMPDIFF( MONTH , '2014-09-28', CURDATE( ) ) ) - ( TIMESTAMPDIFF( YEAR, '2014-09-28', CURDATE( ) ) *12 ) MONTH ) ) ) AS DIAS


Más información en: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

Fecha: Sumar días a una fecha

$fecha = date('Y-m-j');
$newfecha = strtotime ( '+2 day' , strtotime ( $fecha ) );
$newfecha = date ( 'Y-m-j' , $newfecha );

Para sumar horas a una fecha:
$fecha = date('Y-m-d H,i,s', (strtotime ("+2 Hours"))); También se pueden sumar y restar semanas, meses y años:
$newfecha = strtotime ('+1 week', strtotime($fecha));
$newfecha = strtotime ('-2 week', strtotime($fecha));
$newfecha = strtotime ('+3 month', strtotime($fecha));
$newfecha = strtotime ('-4 month', strtotime($fecha));
$newfecha = strtotime ('+5 year', strtotime($fecha));
$newfecha = strtotime ('-6 year', strtotime($fecha));

Fechas: SQL para obtener el tiempo transcurrido entre dos fechas

// Que te devuelva la diferencia en días
SELECT username, TIMESTAMPDIFF(DAY, fecha_alta, fecha_fin) as diferencia FROM usuarios where id = 10

// Que te devuelva la diferencia en segundos
SELECT username, TIMESTAMPDIFF(SECOND, fecha_alta, fecha_fin) as diferencia FROM usuarios where id = 10

// Tiempo transcurrido entre dos fechas
$fecha1 = new DateTime("2015-05-31 02:30:31");
$fecha2 = new DateTime("2015-07-03 03:41:50");
$fecha = $fecha1->diff($fecha2);
printf('%d años, %d meses, %d días, %d horas, %d minutos', $fecha->y, $fecha->m, $fecha->d, $fecha->h, $fecha->i);

Fechas: Pasar una fecha a formato español

function fechaToSpanish($fecha) {
    $arr = explode(" ", $fecha);
    $fecha = $arr[0];
    $arrAux = explode("-",$fecha);
    $fechaSpanish = $arrAux[2]."/".$arrAux[1]."/".$arrAux[0];
    $fechaSpanish .= " ".$arr[1];
    return $fechaSpanish;
}

// *******************************
function fFecha($fecha) {
list($anno, $mes, $dia) = explode("/", $fecha);
return ($dia . "-".$mes . "-" . $anno);
}

// *******************************
function fFechaConMes($fecha) {
list($anno, $mes, $dia) = explode("/", $fecha);

setlocale(LC_TIME, 'spanish');
$nMes = strftime("%B",mktime(0, 0, 0, $mes, $dia, $anno));
return ($dia . " de ".$nMes . " de " . $anno);
}

Fechas y hora 4: Comparar dos fechas entre sí

function comparar_fechas($fecha1, $fecha2) {
  $campos = explode("/",$fecha1);
  $fecha1_seg = mktime(0, 0, 0, $campos[1], $campos[0], $campos[2]);
  $campos = explode("/", $fecha2);
  $fecha2_seg = mktime(0, 0, 0, $campos[1], $campos[0], $campos[2]);
  if ($fecha1_seg == $fecha2_seg) { echo "La fecha ".$fecha1." y la fecha ".$fecha2." son idénticas<br>"; }
  else {
    if ($fecha1_seg < $fecha2_seg) { echo "La fecha ".$fecha1." es más antigua que ".$fecha2."<br>"; }
    else { echo "La fecha ".$fecha2." es más antigua que ".$fecha1."<br>"; }
  }
}
Si tienes alguna duda/problema en PHP o JQuery, haz la pregunta en el comentario de esta entrada e intentaré responderte lo antes posible

Fechas y hora 3: Chequear si una fecha es correcta

<?php
if (checkdate($mes,$dia,$anno)) { ... }
?>
Si tienes alguna duda/problema en PHP o JQuery, haz la pregunta en el comentario de esta entrada e intentaré responderte lo antes posible

Fecha y hora 2: Obtener la fecha/hora actual del servidor

$fecha = getdate();
  echo $fecha["seconds"]."<br>";
  echo $fecha["minutes"]."<br>";
  echo $fecha["hours"]."<br>";
  echo $fecha["mday"]."<br>"; // día del mes
  echo $fecha["wday"]."<br>"; // 0 si es domingo, 1 lunes...
  echo $fecha["mon"]."<br>"; // número del mes
  echo $fecha["year"]."<br>"; // año
  echo $fecha["yday"]."<br>"; // días transcurridos desde el 1 de Enero
  echo $fecha["weekday"]."<br>"; // Da Sunday
  echo $fecha["month"]."<br>"; // Da October

Si tienes alguna duda/problema en PHP o JQuery, haz la pregunta en el comentario de esta entrada e intentaré responderte lo antes posible

Fechas y hora 1: Obtener segundos, minutos, horas, día, mes, año y día de la semana

$hora_actual = date("h");
$minuto_actual = date("i");
$segundo_actual = Date("s");

$dia_actual = date("d");
$mes_actual = date("m");  // da en número, ej: 08
$anno_actual = date("Y"); // con 4 cifras, si pones "y" da solo 2 cifras

$dia_semana = date("w"); // da 0 si es domingo, 1 lunes, 2 martes, ...

$segundos_totales = mktime(0,0,0,08,28,2012); // segundos transcurridos desde el 01/01/1970

$fecha = date("d")."/".date("m")."/".date("Y")." a las ".date("H").":".date("i").":".date("s");



Si tienes alguna duda/problema en PHP o JQuery, haz la pregunta en el comentario de esta entrada e intentaré responderte lo antes posible