C Library Functions  - d2b (3)

NAME

d2b(3f) - [M_time:BAS] given DAT date-time array returns Baseday and Seconds type (LICENSE:MIT)

CONTENTS

Synopsis
Description
Options
Returns
Example
Author
License

SYNOPSIS

function d2b(dat) result(bas)

    integer,intent(in)  :: dat(8)
    type(BAStime) :: bas

DESCRIPTION

Given DAT date-time array returns Baseday and Seconds type

OPTIONS

dat Integer array holding a "DAT" array, similar in structure to the array returned by the intrinsic DATE_AND_TIME(3f):
             dat=[ year,month,day,timezone,hour,&
             & minutes,seconds,milliseconds]

If not present, use current time.

RETURNS

bas A Baseday and seconds(MJD) is composed of whole days since the start of 17 Nov 1858 CE in Universal Time (UTC) and an offset in seconds from the base day.

EXAMPLE

Sample program:

    program demo_d2b
    use M_time, only : d2b, BAStime, d2j, d2m
    implicit none
    integer :: dat(8)
    type(BAStime) :: bas
    !                            Modified Julian Dates
    !
    !   To use this table, add the day-of-month to the tabulated entry.
    !   For example, 30 Jan 2000 = MJD 51573.
    ! __________________________________________________________________
    !  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009
    integer,parameter :: array(1:12,2000:2009)=reshape([ &
     51543,51909,52274,52639,53004,53370,53735,54100,54465,54831, & ! Jan
     51574,51940,52305,52670,53035,53401,53766,54131,54496,54862, & ! Feb
     51603,51968,52333,52698,53064,53429,53794,54159,54525,54890, & ! Mar
     51634,51999,52364,52729,53095,53460,53825,54190,54556,54921, & ! Apr
     51664,52029,52394,52759,53125,53490,53855,54220,54586,54951, & ! May
     51695,52060,52425,52790,53156,53521,53886,54251,54617,54982, & ! Jun
     51725,52090,52455,52820,53186,53551,53916,54281,54647,55012, & ! Jul
     51756,52121,52486,52851,53217,53582,53947,54312,54678,55043, & ! Aug
     51787,52152,52517,52882,53248,53613,53978,54343,54709,55074, & ! Sep
     51817,52182,52547,52912,53278,53643,54008,54373,54739,55104, & ! Oct
     51848,52213,52578,52943,53309,53674,54039,54404,54770,55135, & ! Nov
     51878,52243,52608,52973,53339,53704,54069,54434,54800,55165],& ! Dec
     shape=shape(array),order=[2,1])
     integer :: i,j
       call date_and_time(values=dat)
       write(*,’(" Today is:",*(i0:,":"))’)dat
       write(*,*)’Baseday and Seconds is’,d2b(dat)
       do i=2000,2009
        do j=1,12
         !dat=[ year,month,day,timezone,hour,minutes,seconds,milliseconds]
         dat=[i,j,1,0,0,0,0,0]
         bas=d2b(dat)
         if(array(j,i)+1.ne.bas%base_day)then
            write(*,*)i,j,array(j,i)+1,d2b(dat),d2m(dat),d2j(dat)-2400000.5
         endif
        enddo
       enddo
    end program demo_d2b

Results:

    >  Today is:2025:1:26:-300:1:2:14:388
    >  Baseday and Seconds is 60701 21734.387965500355

AUTHOR

John S. Urban, 2025

LICENSE

    MIT


Nemo Release 3.1 d2b (3) February 23, 2025
Generated by manServer 1.08 from 5213ef6d-32fd-4eae-85e4-62bf1672f65d using man macros.