Ver Mensaje Individual
  #42 (permalink)  
Antiguo 04/01/2005, 08:18
Avatar de Muzztein
Muzztein
 
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 4 meses
Puntos: 16
fechas, malditas fechas

bueno.
aburrido de tener que lidear con las configuraciones de las fechas y tener que sincronizarlas entre el servidor web y el servdior de base de datos.
se me ocurrio manejar mi propio estandar de fechas que lo he estado aplicando desde hace tiempo en todas mis creaciones y a funcionado de maravilla.


para empezar, nunca mas utilice un tipo de dato DATE.

para mi eso ya esta obsoleto.

por el contrario me he creado un DOMINIO del tipo de dato char14 que va desde el

19000101000000 hasta el 99991231235959

ahora bien.
como podran darse cuenta el formato utilizado es yyyymmddhhmmss

de tal manera que si lo ordeno de mayor a menor quedara ordena segun la hora de manera natural.(tal como el tiempo pasa)

Teniendo eso como base del estandard utilizo estas dos simples funciones que me permite convertir de ida y de vuelta la fecha como desee yo ocuparla

(la llamo inc_fechas.asp y la invoco en todas mis paginitas)


Código:
'session.lcid=1033 'setea la fecha en mmddyy
session.lcid=1034 'setea la fecha en ddmmyy

function dateToIwsDate(str)
	if isdate(str) = true then
		ano = year(str)
		mes = month(str)
		dia = day(str)
		hora= hour(str)
		minuto = minute(str)
		segundo = second(str)
		if len(ano) < 4 then ano = "20" & ano
		if len(mes) < 2 then mes = "0" & mes
		if len(dia) < 2 then dia = "0" & dia
		if len(hora) < 2 then hora = "0" & hora
		if len(minuto) < 2 then minuto = "0" & minuto
		if len(segundo) < 2 then segundo = "0" & segundo
		dateToIwsDate = ano&mes&dia&hora&minuto&segundo
	else
		dateToIwsDate= "19000101000000"
	end if
end function


function iwsDateToDate(str)
	if len(str) = 14 then
		ano = left(str,4)
		mes = mid(str,5,2)
		dia = mid(str,7,2)
		hora = mid(str,9,2)
		minuto = mid(str,11,2)
		segundo = right(str,2)
		x_fecha = ano & "/" & mes & "/" & dia & " " & hora & ":" & minuto & ":" & segundo
		if isdate(x_fecha) = true then
			iwsDateToDate = cdate(x_fecha)
		else
			iwsDateToDate = cdate(iwsDateToDate("19000101000000"))
		end if
	else
		iwsDateToDate = cdate(iwsDateToDate("19000101000000"))
	end if
end function
y tadá

adios complicaciones con las fechas para siempre.

(he hecho algunas modificaciones,pero la idea sigue siendo la misma)

saludos