Entradas

Mostrando las entradas etiquetadas como funciones fecha

Uso básico de MomentJS

Imagen
El uso de fechas para cualquier lenguaje de programación es algo básico y en JS, siendo del lado del usuario, su uso, validación e internacionalización es más que importante. El objeto Date de JavaScript es bastante básico y aunque hay clases que extienden sus funcionalidades aún no es suficiente. Para ello existe una librería muy útil llamada momentjs . La documentación esta bastante bien pero aún así hay muchos ejemplos que no me quedan claros. Por ejemplo a la hora de crear un nuevo objeto lo podemos hacer de la siguiente forma: moment(value, "MM/DD/YYYY") o con varios formatos posibles moment(value, ["MM/DD/YYYY", “DD/MM/YYYY”]) Es muy importante que las letras sean en mayúsculas porque el horario se define con letras en minúscula por ejemplo m.format('MM/DD/YYYY HH:mm'), asumiendo que m es la variable resultante del constructor anterior. Se pueden concatenar funciones por ejemplo si queremos validar un campo de un formulario con un formato de ...

DateJS y jQuery UI Datepicker

Imagen
 La librería DateJS es una interfaz muy intuitiva para trabajar con fechas en JS, sobre todo internacionalizar las mismas y escribirlas en diferentes idiomas. Trabajando con ella me he dado cuenta que tal y como la descargamos es incompatible con la extensión de jQuery UI Datepicker produciendo el error Maximum call stack size exceeded error al llamar a la función toString que esta librería sobre escribe. Para corregirlo basta con editar el archivo date.js y reemplazar las apariciones de toString por print (es el nombre que escogí yo) salvo en la línea 40 donde aparece s.toString. Con estas modificaciones ya podremos trabajar con ambas características.

Tips para campos datetime en SQL Server

Imagen
Para mi es mucho más sencillo e intuitivo trabajar con campos datetime en MySQL pero SQL Server ofrece las mismas (sino alguna más) posibilidades de convertir estos campos en formatos concretos de hora y fecha. Para ello tenemos las funciones CONVERT y DATEPART . Aquí os dejo algunos ejemplos de su uso. Convertir un campo datetime a fecha en castellano (el año con 4 dígitos) SELECT CONVERT(VARCHAR(10), CURRENT_TIMESTAMP, 103); Convertir un campo datetime a fecha en castellano (el año con 2 dígitos) SELECT CONVERT(VARCHAR(8), CURRENT_TIMESTAMP, 3); Extraer la fecha de un campo datetime SELECT CONVERT(DATE, CURRENT_TIMESTAMP); Extraer el tiempo de un campo datetime con milisegundos SELECT CONVERT(TIME, CURRENT_TIMESTAMP); Extraer el tiempo de un campo datetime sin milisegundos SELECT CONVERT(VARCHAR(9), CURRENT_TIMESTAMP, 108); ¿Se os ocurre algún otro formato más?

Introducción a las fechas en SQL Server

En este post quiero tratar de explicar cómo usar las fechas en SQL Server y que cosas debemos tomar en consideración pero antes voy a tratar de explicar que son para SQL Server, el cual, tiene básicamente dos tipos de datos donde se pueden almacenar las mismas: Datetime y SmallDateTime, en este cuadro veremos las diferencias entre estos dos tipos de datos. DateTime Valores de Fecha y Hora que están comprendidos entre 1/1/1763 y 31/12/9999. La hora se expresa con una exactitud de hasta 1/300 de segundo SamallDateTime Valores de Fecha y Hora que están comprendidos entre 1/1/1900 y 6/6/2079. El grado de precisión de la hora llega hasta el minuto ¿Cómo guarda internamente SQL Server las fechas ? El motor de SQL Server siempre guarda las fechas de una sola forma y no esta referida a ningún formato concreto como podría ser Americano, Español, Japonés, etc.; SQL Server guarda las fechas DateTime como enteros de 4 bytes (los primeros 4 bytes almacenan la fecha y los otros 4 la...

Calcular último día de cada mes con PHP

En el siguiente post voy a publicar algunas variantes en PHP para calcular el último día de un mes y un año dado (o lo que es lo mismo: cuantos días tiene un mes) Voy a mostrar 3 opciones en orden de preferencia. Devolver el número de días de un mes para un año y un calendario dados Para esto utilizaremos la librería (extension=calendar.so) de PHP Calendario (php5-calendar) la cual hay que instalar primero . Luego llamaremos a la función cal_days_in_month que nos devolverá el número de días del mes del año para el calendario especificado. En caso de que la función cal_days_in_month no esté definida porque no podamos instalar la librería calendar entonces podremos utilizar la función date como sigue a continuación: date('t', mktime(0, 0, 0, $month, 1, $year)) La opción t de la función date de PHP nos devuelve el número de días del mes dado. Y si somos más artesanales podemos utilizar la función de PHP checkdate con un pequeño script: function GetLastDayofMonth($...

Calcular el día máximo de un mes

Para celebrar el nuevo diseño del blog, por cierto muy buena la actualización de blogger para cambiar el diseño y las plantillas, os dejo esta función que según el mes te devuelve el día máximo del mes, o sea de enero el 31 y febrero si es un año bisiesto 29 y de lo contrario 28. Espero que os sirva: function dameMaximoDiaMes($mes,$anno = null){ if (is_numeric($mes) && ! empty ($mes) && $mes < 13){ $largos = array (1,3,5,7,8,10,12); $cortos = array (4,6,9,11); if (in_array($mes,$largos)) return 31; if (in_array($mes,$cortos)) return 30; if ( empty ($anno) || !is_numeric($anno) || $anno < 0) return 28; $cualquiera = "$anno-01-01" ; $biciesto = date( "L" ,strtotime($cualquiera)); return (! empty ($biciesto))?29:28; } return false; } ¿Alguna otra forma?

Fechas, valor por defecto en MySQL

Imagen
Los tipos de datos datetime, date y timestamp en mysql son muy utilizados y tiene un rango de validez entre el 1 de enero del año 1000 y el 31 de diciembre del 9999. Admiten muchos tipos de formatos a la hora de insertar datos, cadenas con distintos separadores y valores numéricos que representen una fecha válida como YYYYMMDDHHIISS. En concreto el tipo de dato timestamp puede tener valores por defecto como CURRENT_TIMESTAMP y también es aplicable al realizar un update sobre la fila con el evento ON CHANGE. Como nota importante de los valores por defecto en timestamp es que no se admiten 2 o más columnas con este valor en mysql, ya sean en la cláusula default o en la cláusula on update, esto provocaría un error del tipo: ERROR: Error 1293: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause Ejemplo: CREATE TABLE t ( ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ...

Convertir fechas de excel a PHP

Un archivo de Microsoft Excel almacena las fechas en un formato numérico que corresponde a los días desde el 1 de enero de 1900, teniendo en cuenta que php las fechas las guarda a partir de 1970 y en segundos pues es un poco engorroso convertir una fecha de un formato a otro, para ello PHPExcel de codeplex tiene una clase llamada PHPExcel_Shared_Date con una función estática que hace esta operación, la función como tal se llama ExcelToPHP y devuelve la cantidad de segundos correspondientes a la fecha en PHP. Podemos utilizarla de la siguiente forma: // leo el archivo excel $objPHPExcel = HPExcel_IOFactory::load('prueba.xlsx'); // utilizo como activa la hoja 1 $objPHPExcel->setActiveSheetIndex(0); $objWorksheet = $objPHPExcel->getActiveSheet(); // obtengo el valor de la celda $fecha_excel = objWorksheet->getCell('A1')->getValue(); // utilizo la función y obtengo el timestamp $timestamp = PHPExcel_Shared_Date::ExcelToPHP($fecha); $fecha_php = date(...

Expresiones regulares para fechas

He encontrado un sin número de páginas que validan mediante expresiones regulares las fechas en javascript pero en concreto no encontró una que validara el formato de las bases de datos, 2010-04-08 18:33:23 por ejemplo, la expresión regular sería la siguiente: var RegExPattern = /^\d{4}-\d{2}-\d{2} (0[1-9]|1\d|2[0-3]):([0-5]\d):([0-5]\d)$/; Otros sitios interesantes: para formatos de expresiones regulares de fechas en javascript y para expresiones más comunes . Actualización: La expresión regular anterior no es válida para las horas 00, esta sería la expresión correcta: var RegExPattern = /^\d{4}-\d{2}-\d{2} ([0-1]\d|2[0-3]):([0-5]\d):([0-5]\d)$/;

Validar fechas con javascript

No se las miles de veces que he tenido que validar fechas con javascript y la verdad es que siempre es un verdaddero encordio, aquí os dejo una pequeña funcion con la cual se crea un objeto fecha muchomás fácil de comparar si una fecha es menor que otra que con los if - else if - else. Espero que realmente os sirva de ayuda, a mi me viene genial function compruebaFechas(){ fecha_inicio =new String(document.frm_nuevo.fecha_inicio.value); hora_inicio = document.frm_nuevo.hora_inicio.value; minuto_inicio = document.frm_nuevo.minuto_inicio.value; fecha_fin =new String(document.frm_nuevo.fecha_fin.value); hora_fin = document.frm_nuevo.hora_fin.value; minuto_fin = document.frm_nuevo.minuto_fin.value; dia_inicio = parseInt(fecha_inicio.substr(3, 2),10); mes_inicio = parseInt(fecha_inicio.substr(0, 2),10) - 1; ano_inicio = parseInt(fecha_inicio.substr(6, 4)); dia_fin = parseInt(fecha_fin.substr(3, 2),10); mes_fin = parseInt(fecha_fin.substr(0, 2),10) - 1; ano_fin = parseInt(fecha...