versiones tiempo procesadores online conversor aƱos datetime timestamp date julian

datetime - procesadores - Convertir la marca de tiempo de Unix en juliana



unix time converter (3)

La época de Unix (punto cero) es el 1 de enero de 1970 GMT. Eso corresponde al día juliano de 2440587.5

Entonces, en pseudo-código:

function float getJulianFromUnix( int unixSecs ) { return ( unixSecs / 86400.0 ) + 2440587.5; }

¿Cómo puedo convertir de una marca de tiempo Unix (digamos 1232559922) a una fecha juliana fraccionaria (2454853.03150)?

Encontré un sitio web ( http://aa.usno.navy.mil/data/docs/JulianDate.php ) que realiza un cálculo similar, pero tengo que hacerlo programáticamente.

Las soluciones pueden estar en C / C ++, python, perl, bash, etc ...


Sé que esta es una publicación anterior, pero solo diré ...

La respuesta dada por Jason Cohen es una buena aproximación de la conversión.

Sin embargo, hay un problema relacionado con la cantidad de segundos en un día. Un día no es -exactamente- de 86400 segundos de duración, y periódicamente se agregan segundos a los días para mantener el tiempo sincronizado con los diversos estándares observables. Estos se denominan Leap Seconds ( https://en.wikipedia.org/wiki/Leap_second ). Los segundos intercalares se agregan a UTC para mantenerlo dentro de 1 segundo de UT1.

Es lógico pensar que a medida que transcurra más y más tiempo desde el 1 de enero de 1970, la simple conversión anterior acumulará más y más errores a partir del "tiempo real observable". Entre 1972 y 2013 se agregaron 25 segundos intercalares.

Parte de la belleza y la simplicidad de los números de Julian Day es que no representan cadenas de fechas en absoluto. Son solo un recuento del tiempo transcurrido desde el inicio de la Época Juliana, al igual que el tiempo POSIX es un conteo continuo de milisegundos desde la Época POSIX. El único problema que existe, entonces, es cuando intenta mapear un número del día juliano a una cadena de fecha localizada.

Si necesita una cadena de fecha exacta en un minuto (en 2013), necesitará un algoritmo que pueda dar cuenta de los segundos intercalares.


Aquí está mi código de JavaScript para convertir la marca de tiempo de Unix en Julian . Originalmente muestra la fecha y hora actuales, pero con un pequeño mod es la respuesta a su pregunta:

function computeJulianDate(DD,MM,YY,HR,MN,SC) { with (Math) { HR = HR + (MN / 60) + (SC/3600); GGG = 1; if (YY <= 1585) GGG = 0; JD = -1 * floor(7 * (floor((MM + 9) / 12) + YY) / 4); S = 1; if ((MM - 9)<0) S=-1; A = abs(MM - 9); J1 = floor(YY + S * floor(A / 7)); J1 = -1 * floor((floor(J1 / 100) + 1) * 3 / 4); JD = JD + floor(275 * MM / 9) + DD + (GGG * J1); JD = JD + 1721027 + 2 * GGG + 367 * YY - 0.5; JD = JD + (HR / 24); } return JD; } function getUTCDateTimeOrJD(now,jd=0) { var hours = now.getUTCHours(); var minutes = now.getUTCMinutes(); var seconds = now.getUTCSeconds() var month = now.getUTCMonth() + 1; var day = now.getUTCDate(); var year = now.getUTCFullYear(); if (jd==1) return computeJulianDate(month, day, year, hours, minutes, seconds); else return day+". "+month+". "+year+". "+hours+":"+minutes+":"+seconds; } var unixTime = 1473294606; getUTCDateTimeOrJD(new Date(unixTime*1000)); getUTCDateTimeOrJD(new Date(unixTime*1000),1);

Ejemplo de trabajo JSFiddle aquí