Convertir cadena a fecha y hora
Convertir cadena a fecha y hora

 

Publi

Resultados 1 al 9 de 9

Tema: Convertir cadena a fecha y hora

  1. #1
    Estoy haciendo algo mal aquí y obtengo un resultado incorrecto.

    En un punto de mi EA, estoy guardando una fecha y hora en una variable de cadena como algo como esto:

    puntoA = 1303867800

    Ahora, en algún momento posterior, necesito volver a convertirlo en una fecha y hora para poder usarlo para crear un objeto rectangular en el gráfico, así que estoy usando:

    puntoS = StrToTime(puntoS)

    Después de hacer esto, la variable se convierte en:

    puntoA = 1303948800

    Lo cual, como puede ver, es diferente del original anterior: probablemente estoy haciendo algo tonto mal si alguien puede ayudar a obtener mi variable DateTime original en una cadena y luego VOLVER a DateTime, muy apreciado.

    gracias

  2.                         
    Publicidad
  3. #2
    Muchas gracias por la explicación, se lo agradezco. ¿Lo único es que no puedo encontrar el IntToStr en la documentación?

  4. #3
    Debería aclarar un poco más. lo que ha hecho no podría hacerlo en un entorno de programación adecuado, y se ha quedado atascado debido a que mql se ocupa de ciertas situaciones de manera liberal en lugar de hacer cumplir estrictamente las convenciones de tipos. lo que parece haber hecho de manera efectiva es esto: tomar un int, escribir en un archivo (entero) [en este punto, mql convierte automáticamente el entero en una representación de cadena de este número para usted, pero en realidad no debería ... aquí es donde usted se han tropezado]... readfromfile(cadena), StringDateSentenceToDatTime(cadena) editar: arriba debería ser - tome un valor int y léalo directamente en una variable de cadena [mql convierte esto para usted automáticamente pero no debería, y aquí es donde te han pillado], escribe una cadena en un archivo, lee una cadena desde un archivo, convierte una cadena con formato de fecha a una fecha y hora. si mql fuera medio en serio, vomitaría cuando intenta leer el valor entero de fecha y hora en una variable de cadena y, en cambio, debería forzarlo a hacer esta conversión manualmente para que sepa exactamente qué valor es qué en todo momento en lugar de dejarlo ahorcarse verlo en acción es ver algo como esto: convertir la fecha y hora 123456789 en la cadena 123456789 escribir en el archivo: cadena 123456789 leer del archivo: cadena 123456789 convertir la cadena 123456789 que debe formatearse con datos de fecha y hora en el valor de fecha y hora basura 987654167 pero , lo que PIENSA que está sucediendo es esto: convierta la fecha y hora 123456789 en una cadena formateada como datos de fecha y hora aaaa.mm.dd hh:mm escriba en el archivo aaaa.mm.dd hh:mm lea del archivo aaaa.mm.dd hh:mm convierta la cadena aaaa.mm.dd hh:mm al valor de fecha y hora 123456789 lo que DESEA que suceda es esto: convierta la fecha y hora 123456789 en la cadena 123456789 escriba en el archivo 123456789 lea del archivo 123456789 convierta la cadena 123456789 en int (que es lo mismo que fecha y hora) 123456789 o, si esto no funciona, puede hacer esto, que es más parecido a lo que pretendía hacer: convertir datetime 123456789 a la cadena con formato de fecha aaaa.mm.dd hh:mm (usando TimeToStr) escribir cadena aaaa.mm.dd hh: mm al archivo lee la cadena aaaa.mm.dd hh:mm del archivo con cadena con formato de fecha vert aaaa.mm.dd hh:mm a datetime 123456789 probablemente no pueda ser mucho más claro que eso.

  5. #4
    sí, por supuesto. datetime es básicamente un número entero. está escribiendo un valor entero en un archivo en formato de cadena, p. 123456789, entonces está leyendo del archivo este número y luego empujándolo a la función strtotime como esa cadena de números en lugar del formato de pseudo oración que espera strtotime. timetostr y strtotime convierten de un lado a otro entre números de fecha y hora y oraciones de pseudo-fecha. todo su propósito es poder mostrar un valor de fecha y hora en un formato legible por humanos, o tomar una cadena formateada legible por humanos que contiene valores de fecha y hora y convertirla en un valor de fecha y hora (entero) utilizable por computadora. o tome el número de fecha y hora, conviértalo en la pseudo oración de cadena de fecha con timetostr, escríbalo en el archivo ... luego lea esta pseudo oración y vuelva a convertirla en una fecha y hora con timetostr. o, de la manera más lógica, tome el número de fecha y hora, IntToStr y escriba la cadena en el archivo ... luego lea la cadena del archivo, luego vuelva a convertirla a int con StrToInt. evite por completo las funciones inútiles timetostr/strtotime que son más útiles para escupir en formatos legibles por humanos y no tienen ninguna utilidad positiva para la computadora.

  6. #5
    ok, entiendo tu punto, pero esta es la historia completa: tengo un primer EA que guarda esta fecha y hora en un archivo, por lo tanto, obviamente, se guarda como una cadena: Inserted Code pointA = ObjectGet (object1, OBJPROP_TIME1) Por lo tanto, cuando el 2nd EA obtiene esto los datos del archivo parecen 1303867800 ¿Está diciendo que cuando guardo pointA en el archivo debería usar la función TimeToStr? ¿Eso lo guardará correctamente para que cuando regrese sea correcto?

  7. #6
    definitivamente estás haciendo algo mal. StrToTime debería recibir una cadena en el formato aaaa.mm.dd hh:mm, pero en su ejemplo, la cadena pointA solo equivale a un número. Creo que es probable que esté haciendo todo mal y dificultando las cosas, pero, no obstante, eche un vistazo al código que funciona debajo del punto A de la cadena de código insertado; puntoA = TiempoEnCadena(Tiempo#91;0#93; Print(pointA = pointA after convert to time: StrToTime(pointA)); la salida de ejemplo da: 2011.04.28 18:30:04 nbTestingOthersIndi EURUSD,M1: pointA = 2011.04.28 10:30 después de convertir a tiempo: 1303986600

  8. #7
    no hay suficiente código para depurar. parece que su cadena se está actualizando en algún lugar del camino con un nuevo valor, ya que el valor cuando lo envía de vuelta a través de strtotime tiene un número mayor que indica un valor de tiempo más reciente.

  9. #8
    se ve de esa manera, pero es bastante extraño: estoy usando la siguiente línea para depurar y dentro de la línea es incorrecta: Inserted Code Print (pointA = pointA after convert to time: StrToTime (pointA)); La salida es: Código insertado EURAUD,M15: pointA = 1303867800 después de convertir a tiempo: 1303948800

  10. #9
    oh ffs!!! lo siento amigo, a veces me vuelvo un poco hacia atrás porque escribo el código en algunos idiomas diferentes. Posiblemente me estoy confundiendo con lo que estás haciendo con qué variables. puede ser de gran ayuda en estas situaciones dar nombres más significativos a sus variables, como PointAString o sPointA... funciona como tempdouble o dtemp, etc., sin ver las declaraciones de variables que ha usado para definir las variables y sus tipos que estoy tomando adivina lo que has hecho exactamente. para responder a su pregunta al buscar en el archivo de ayuda, veo que en realidad no hay una función intostr, y simplemente puede asignar un número entero a una variable de cadena y mql lo convierte automáticamente por usted. en un entorno de programación adecuado, cosas como esta requerirían llamar a una función muerta que convierte específicamente un número entero en una cadena, y de esta manera no puede confundirse con lo que contiene la variable X y la variable Y cuando los compiladores fallan. más si intenta mezclar y combinar diferentes tipos de datos. en resumen: me estoy confundiendo. lo resolverá, solo tenga en cuenta si está leyendo o escribiendo una versión de cadena de un número, o una versión de cadena con formato de fecha de un número de fecha y hora

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.