Página 1 de 1

Dividir fecha y hora

Publicado: 20 Feb 2018, 23:56
por kemazonico
Hola amigos, aca con otra duda sobre como podria dividir y convertit una fecha y hora del tipo: "20180220174000" a: "2018/02/20 17:40:00"
Actualmente lo hago mas o menos de esta manera:

Código: Seleccionar todo

#include <Date.au3>

$finicio = '20180220133700'

$sYear = StringLeft ( $finicio, 4)
$sMonth = StringLeft (StringTrimLeft ($finicio, 4), 2)
$sDay = StringLeft (StringTrimLeft ($finicio, 6), 2)
$sHou = StringLeft (StringTrimLeft ($finicio, 8), 2)
$sMin = StringLeft (StringTrimLeft ($finicio, 10), 2)
$sSec = StringLeft (StringTrimLeft ($finicio, 12), 2)

ConsoleWrite ( $sYear & "/" & $sMonth & "/" & $sDay & " " & $sHou & ":" & $sMin & ":" & $sSec & @CRLF)
Pero pense que quiza existe alguna función que pueda hacer esta tarea, es más para optiizar el código.

Como siempre, agradezco sus comentarios.

Re: Dividir fecha y hora

Publicado: 11 Mar 2018, 20:05
por Chefito
La forma con lo que lo has hecho es correcta. Si quieres otras posibilidades, también puedes utilizar expresiones regulares. Te dejo 3 ejemplos de como hacerlo:

Código: Seleccionar todo

$finicio = '20180220133700'

$finicioFinal1 = StringRegExp($finicio, "(..)", 3)
$fechaHora = $finicioFinal1[0] & $finicioFinal1[1] & "/" & $finicioFinal1[2] & "/" & $finicioFinal1[3] & " " & $finicioFinal1[4] & ":" & $finicioFinal1[5] & ":" & $finicioFinal1[6]
MsgBox(0,"Prueba 1",$fechaHora)

$finicioFinal2 = StringRegExp($finicio, "(....)(..)(..)(..)(..)(..)", 3)
$fechaHora = $finicioFinal2[0] & "/" & $finicioFinal2[1] & "/" & $finicioFinal2[2] & " " & $finicioFinal2[3] & ":" & $finicioFinal2[4] & ":" & $finicioFinal2[5]
MsgBox(0,"Prueba 2",$fechaHora)

$finicioFinal3 = StringRegExp($finicio, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})", 3)
$fechaHora = $finicioFinal3[0] & "/" & $finicioFinal3[1] & "/" & $finicioFinal3[2] & " " & $finicioFinal3[3] & ":" & $finicioFinal3[4] & ":" & $finicioFinal3[5]
MsgBox(0,"Prueba 3",$fechaHora)
Saludos.

Re: Dividir fecha y hora

Publicado: 17 Mar 2018, 19:30
por Dany
Hola. Aquí otra alternativa.

Código: Seleccionar todo

Local $finicio = "20180220174000"
$finicio = StringRegExpReplace($finicio, '(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})', '$1/$2/$3 $4:$5:$6')
ConsoleWrite($finicio & @CRLF)

Saludos :smt027