|
Página 1 de 3
|
Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Función CDate
Buenas!.
He convertido una cadena con un formato de fecha mm/dd/yyyy a un tipo date.
El resultado es este:
Citar:
11/25/1978
24/11/1978 22:00:00
Por curiosidad , ¿ cómo es que en el tipo date da casi un día menos ?.
Según la ayuda dice:
Citar:
Las fechas se almacenan como UTC. Se convierten en fecha local sólo al ser representadas.
Por otro lado, de Cdate dice:
Citar:
¡Precaución! Esta función no utiliza los parámetros de locaclización actuales.
Bueno, de principio se lo doy en formato mm/dd/yyyy
¿ Cuando dice representadas que quiere decir exactamente ?.
Si yo la muestro con un print, es una forma de presentarla, ¿ entonces ?.
Si yo usase Format con el tipo Date me estaría dando un día menos.
Citar:
11/24/1978
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Domingo, 22 Abril 2018, 18:45; editado 1 vez
|
#1 Domingo, 22 Abril 2018, 18:45 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Función CDate
Por cierto.
Si buscáis el tipo date en la ayuda de gambas dice esto, que me parece un poco extraño..
Citar:
Este tipo de dato nativo representa un valor de fecha y hora.
Las fechas se almacenan internamente como un par de valores enteros:
El primero es el número de días desde la era gambas, un día arbitrario en el 8000 A.C.
El último es el número de microsegundos desde medianoche.
La era gambas ?. ¿ En el 8000 A.C ya existía "La Gamba" primaria ?!.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#2 Domingo, 22 Abril 2018, 19:02 |
|
|
Grandamakulo
Analista Programador
Registrado: Enero 2016
Mensajes: 311
Edad: 55 Ubicación: En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
|
Re: Función CDate
Creo que el primer día de la cuenta es el 1600/01/01, no un día del 8000 AC. Tengo que mirarlo, que ahora me pilla fuera.
En cualquier caso, me sienta fatal este «maremagnum» de convenios de tiempo cuando desde hace mucho se estableció la Fecha Juliana —no Calendario Juliano— y un sistema de representación de tiempo bajo la norma ISO 8601. ¿Tan difícil es unificar bajo esta norma internacional que funciona y bien? Pues debe ser difícil, porque hay un tiempo Unix, un tiempo Excel, un tiempo Mac... Aquí todo el que llega pone el origen donde le sale de las orejas. Y no, YA no es por la limitación de memoria o similar. Es por capricho unívoco, o al menos me lo parece.
Al final, cuando programo cosas de astronomía que requieren de cómputos de tiempo largos me pongo la función de Calendario Gregoriano a Fecha Juliana y viceversa.
Aquí una lista con diversos sistemas de tiempo, con orígenes y resoluciones. —Que, por cierto, otra incongruencia es que haya resoluciones del orden del ms o mucho menos, y que no se tengan en cuenta los segundos intercalares.—:
https://en.wikipedia.org/wiki/System_time
Perdonad, creo que me he encendido y me he ido un poco del tema.
|
#3 Lunes, 23 Abril 2018, 08:34 |
|
|
Grandamakulo
Analista Programador
Registrado: Enero 2016
Mensajes: 311
Edad: 55 Ubicación: En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
|
Re: Función CDate
Los códigos están sin comentar, pero creo que son suficientemente explicativos para usarse en cuanto a argumentos y resultados:
última edición por Grandamakulo el Lunes, 23 Abril 2018, 09:10; editado 1 vez
|
#4 Lunes, 23 Abril 2018, 09:09 |
|
|
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
Re: Función CDate
Los códigos están sin comentar, pero creo que son suficientemente explicativos para usarse en cuanto a argumentos y resultados...
Interesante. Yo también realicé algunas funciones de conversión entre fechas Juliana y Gregoriana que utilicé en: https://foro.gambas-es.org/viewtopic.php?f=5&t=6699
Saludos!
|
#5 Lunes, 23 Abril 2018, 19:56 |
|
|
Grandamakulo
Analista Programador
Registrado: Enero 2016
Mensajes: 311
Edad: 55 Ubicación: En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
|
Re: Función CDate
¡Estupendo!, yo estoy pasando un programa de efemérides que tenía para VB.
¡Compartiremos código!
|
#6 Lunes, 23 Abril 2018, 21:03 |
|
|
Grandamakulo
Analista Programador
Registrado: Enero 2016
Mensajes: 311
Edad: 55 Ubicación: En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
|
Re: Función CDate
El resultado es este:
Citar:
11/25/1978
24/11/1978 22:00:00
Por curiosidad , ¿ cómo es que en el tipo date da casi un día menos ?.
Según la ayuda dice:
Citar:
Las fechas se almacenan como UTC. Se convierten en fecha local sólo al ser representadas.
Efectivamente, las fechas se almacenan en tiempo universal coordinado —más o menos—, por lo que al representarlas con la configuración local le quitan las dos horas del horario de verano en península y Baleares. Porque no te está dando un día menos, son, insisto, sólo dos horas: desde las 00:00 de un día hasta las 22:00 del anterior.
Un saludo
|
#7 Lunes, 23 Abril 2018, 21:15 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Función CDate
En principio la cuestión de la fecha o la hora es para controlar el intervalo de tiempo de generación
entre sprites.
Del primer ejemplo del libro "Python Hunting" cuyos autores son: Brian Carling y Marley Adair.
Python Hunting
He convertido el ejemplo a gambas. Usando las mismas imágenes.
Se controla que cuando llueve, el muñeco usa el paraguas.
Desde la primera gota que toca al personaje se controla el tiempo y el uso de la imagen con paraguas.
Una vez que a nube se aleja de este.
Para la creación de estos ejemplos necesito controlar el tiempo de alguna forma.
PyGame es distinto a la clase Paint.
Esto es cuando se dibuja el personaje.
Public Sub Dibujar()
'Print DateDiff(Me.tiempodeimpacto, Now, gb.Second)
If DateDiff(Me.tiempodeimpacto, Now, gb.Second) >= 1 Then
Me.imagen = imagenmike
Paint.DrawImage(Me.imagen, Me.x, Me.y, Me.imagen.Width, Me.imagen.Height)
Else
Me.imagen = imagenmikeparagua
Paint.DrawImage(Me.imagen, Me.x, Me.y, Me.imagen.Width, Me.imagen.Height)
Endif
End
El control del tiempo en los videojuegos es fundamental en determinados momentos.
Entender estos conceptos a la primera no se fácil. Y sobre todo convertir de un lenguaje
a otro. Al final logré hacerlo funcionar, pero quería probar otras cosas.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#8 Martes, 24 Abril 2018, 09:13 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Función CDate
Que ahora que me fijo:
Cuantos detalles.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#9 Martes, 24 Abril 2018, 09:22 |
|
|
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
Re: Función CDate
¡Estupendo!, yo estoy pasando un programa de efemérides que tenía para VB.
¡Compartiremos código!
Excelente, bro!
|
#10 Miercoles, 25 Abril 2018, 15:17 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 3
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|