resta entre fecha !!
Hola delphiano me surgio un problema interesante que no le ecuentro la vuelta:(
resulta que tengo que indicar si existe mas de x segundos de diferencia entre 2 fechas que se encuentra en string con el formato yyyymmddhhnnss parecia tonto lo 1º que se me ocurrio es pasarlo los 2 string a entero y hacer la resta :confused:grabe error :confused: no contemple el siguiente ejemplo: a='20070228100003'; b='20070228095958'; esto tendria que darme 5 segundos a alguien se le ocurre como solucionarlo |
Yo te recomendaría pasar los strings a un TDateTime y utilizar la función SecondsBetween ;).
PD: Es importante tener la premisa que para trabajar con fechas lo mejor es que estas sean fechas y no cadenas! |
tenes razón pero lo veo algo engorroso porque no se como estara el formato en la Pc del cliente y esta funcion se basa en el formato de Windows, igualmente gracias
|
lo mas facil convierte los valores a TDatetime
haces la resta, la parte entera es la cantidad de dias que hay de diferencia y luego la parte decimal son las horas, para eso usas el formatDateTime algo asi como FormatDateTime('hh:nn:ss', VariableDiferenciaFecha) eso te mostrara la diferencia en horas minutos y segundos como no especificas AM/PM no tendras problemas |
Lamentablemente no es la socucion supon que hay que calcular la diferncia entre:
20070302000001 20070301235959 Igualmente muchas gracias:o |
El trabajo de fechas en delphi no tiene que ver con el formato usado en windows.
Bien es verdad que usando las variables ShortDateFormat de la unidad SysUtils, puedes mostrar una fecha del mismo modo que hace windows, pero también puedes usar tu método particular de mostrar una fecha como te ha dicho luisgutierrezb. EncodeDateTime de la unidad DateUtils, te ayudará a crear las fechas y la respuesta de delphi.com.ar es la mejor. Saludos |
Cita:
Cita:
Esto puede no ser lo mejor ni muy elegante pero funciona, estuve usando diferentes variables y en algunos casos hay una diferencia de 1 segundo, quizas por cuestiones de redondeo, no se. Saludos y espero te ayude. |
Cita:
Formato de fecha y hora: 23/01/2007 23:59:59.999 (falta 1 milisegundo para que desencadene el cambio de fecha). Saludos |
Cita:
|
Cita:
Coloca la siguiente función: Luego podras usarla asi: Y Listo, espero te sirva ;). |
Cita:
muchas gracias si me sirvio pero ahora tengo otro problema como saber si un numero es multiplo de 4 :confused: y cuantos dias trae el mes en el que esta la fecha |
La función DaysInAMonth que se encuentra en la unidad DateUtils a partir de Delphi6 y DateUtil en Delphi5 te devolvera los dias de un mes indicándole también el año.
Así:
Esa función sabrá de antemano cuales son los años bisiestos de manera pues que no necesitaras calcular por aparte, si el año en curso es o no es bisiesto. Pero en caso de que obligatoriamente necesites saber si es o no Bisiesto podrás usar la función IsInLeapYear que devuelve True en caso de que si lo sea y False en caso contrario. |
A bueno y si la cuestión no es de año bisiesto y todo el asunto, si no que solo quieres saber si un numero es multiplo de 4 o no, pues bastara con averiguar si ese numero dividido por 4 arrojara un resto de 0, un ejemplo:
|
Cita:
Muchas gracias jhonny me sirvio de mucha tu ayuda |
Restar fechas en formato numerico 20070701
Perdon por la intromicion en el foro pero tengo un problema similar
expongo mi caso tengo un archivo .bdf el cual administro desde database desktop y uso un sql del mismo para hacer consultas, puedo hacer las consultas a mi gusto... hasta aqui muy bien... Pero el problema surge cuando tengo que restar dos fechas en esta tabla dentro del mismo sql ( el formato de la fecha que maneja la tabla es numerico osea "20070701 - 20070805", Fecha 1 y 2 respectivamente ) Eso da como resultado numerico dentro del sql 104 muy bien es el resultado numerico, pero me intereza el resultado de la resta entre las fechas osea 35 dias, alguien sabe como hacerlo en el mismo sql.... les agradeceria mucho su ayuda.... |
Yo haría una conversión de esos números a variables de tipo TDateTime y usaría la función DaysBetween();
Salud OS. |
creo que esa seria una buena idea...
pero... no uso delphi, si no solamente sql y todas las operaciones las tengo que hacer con este... muchas gracias por su ayuda |
La franja horaria es GMT +2. Ahora son las 17:06:05. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi