DateTimeToJDay, converts Date/Time to Julian day

List

Questa pagina fa parte del Manuale Programmazione IEC 61131-3. Vai all indice.

Il giorno giuliano (Julian Day, JD) è il numero di giorni passati dal mezzogiorno del lunedì 1º gennaio 4713 a.C.[1] Il sistema dei giorni giuliani è stato progettato per fornire agli astronomi un singolo sistema di date che potesse essere usato per lavorare con differenti calendari, e per unificare differenti cronologie storiche, giacché esso non presenta la difficoltà di anni bisestili, cambi di calendario, eccetera.

Fornendo in GDate una Data/Ora Gregoriana la funzione ritorna il valore di giorno giuliano.

Information Circle

Funzione

CODESYS: Non disponibile

LogicLab: eLLabMathsLib

Descrizione

GDate (DATE_AND_TIME) Data/Ora gregoriana.

La funzione ritorna una variabile (LREAL) con il valore di giorno giuliano.

Immagine F_DateTimeToJDay

Esempi

Come utilizzare gli esempi.
Nel seguente esempio sono eseguite alcune conversioni di date.

LogicLab (Ptp179, ST_DateTimeToJDay)
PROGRAM ST_DateTimeToJDay
VAR
    i : UDINT; (* Auxiliary variable *)
    JDay : ARRAY[0..4] OF LREAL; (* Julian day *)
    SValue0 : STRING[ 20 ]; (* String value *)
    SValue1 : STRING[ 20 ]; (* String value *)
    SValue2 : STRING[ 20 ]; (* String value *)
    SValue3 : STRING[ 20 ]; (* String value *)
    SValue4 : STRING[ 20 ]; (* String value *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_DateTimeToJDay"
// *****************************************************************************
// Example of some Gregorian dates converted to Julian day.
// -----------------------------------------------------------------------------

    // Date: 31/12/1999 23:59:59 is Giulian day:2451544.4999884367.

    JDay[0]:=DateTimeToJDay(CONCAT_DT(1999, 12, 31, 23, 59, 59));
    i:=SysVsnprintf(ADR(SValue0), SIZEOF(SValue0), ADR('%.10lf'), LREAL_TYPE, ADR(JDay[0]));

    // Date: 01/01/2000 00:00:00 is Giulian day:2451544.5000000000.

    JDay[1]:=DateTimeToJDay(CONCAT_DT(2000, 1, 1, 0, 0, 0));
    i:=SysVsnprintf(ADR(SValue1), SIZEOF(SValue1), ADR('%.10lf'), LREAL_TYPE, ADR(JDay[1]));

    // Date: 01/01/2000 11:59:59 is Giulian day:2451544.9999884367.

    JDay[2]:=DateTimeToJDay(CONCAT_DT(2000, 1, 1, 11, 59, 59));
    i:=SysVsnprintf(ADR(SValue2), SIZEOF(SValue2), ADR('%.10lf'), LREAL_TYPE, ADR(JDay[2]));

    // Date: 01/01/2000 12:00:00 is Giulian day:2451545.0000000000.

    JDay[3]:=DateTimeToJDay(CONCAT_DT(2000, 1, 1, 12, 0, 0));
    i:=SysVsnprintf(ADR(SValue3), SIZEOF(SValue3), ADR('%.10lf'), LREAL_TYPE, ADR(JDay[3]));

    // Date: 01/01/2000 23:59:59 is Giulian day:2451545.4999884367.

    JDay[4]:=DateTimeToJDay(CONCAT_DT(2000, 1, 1, 23, 59, 59));
    i:=SysVsnprintf(ADR(SValue4), SIZEOF(SValue4), ADR('%.10lf'), LREAL_TYPE, ADR(JDay[4]));

// [End of file]
Was this article helpful?