<HTML> <BODY BGCOLOR=#ccccdd LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE>
<A NAME='DA_DIFF_SECONDS'><A href='../../html_code/tools/da_diff_seconds.inc.html#DA_DIFF_SECONDS' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>

real function da_diff_seconds (date_char_1, date_char_2),2

   !-----------------------------------------------------------------------
   ! Purpose: TBD
   !-----------------------------------------------------------------------

   implicit none

   character(len=24), intent(in) :: date_char_1, date_char_2
  
   integer :: ccyy_1,mo_1,dd_1,hh_1,mi_1,ss_1,jd_1
   integer :: ccyy_2,mo_2,dd_2,hh_2,mi_2,ss_2,jd_2
   integer :: i, year, diff_days
   integer :: start_year, end_year
   integer :: mmday(12)
 
   real    :: s_1, s_2

   if (trace_use_dull) call da_trace_entry("da_diff_seconds")
  
   mmday=(/31,28,31,30,31,30,31,31,30,31,30,31/)
  
   read(date_char_1(1:19), fmt='(i4,1x,4(i2,1x),i2)') &amp;
        ccyy_1, &amp;
          mo_1, &amp;
          dd_1, &amp;
          hh_1, &amp;
          mi_1, &amp;
          ss_1
  
   read(date_char_2(1:19), fmt='(i4,1x,4(i2,1x),i2)') &amp;
        ccyy_2, &amp;
          mo_2, &amp;
          dd_2, &amp;
          hh_2, &amp;
          mi_2, &amp;
          ss_2

   if (ccyy_2 &gt;= ccyy_1) then
      start_year = ccyy_1
      end_year   = ccyy_2
   else
      start_year = ccyy_2
      end_year   = ccyy_1
   end if

   diff_days = 0
  
   do year=start_year,end_year-1
      diff_days = diff_days + 365
      if (mod(year,4) == 0) then
         diff_days = diff_days + 1

         if ((mod(year,100) == 0) .and. (mod(year,400) /= 0)) then
            diff_days = diff_days - 1
         end if
      end if
   end do

   if (mod(ccyy_1,4) == 0) then
      mmday(2) = 29

      if((mod(ccyy_1,100) == 0) .and. (mod(ccyy_1,400) /= 0)) then
         mmday(2) = 28
      end if
   end if

   jd_1 = dd_1

   do i=1,mo_1-1
      jd_1=jd_1+mmday(i)
   end do

   s_1 = real(ss_1) &amp;
       + 60.0*(real(mi_1) &amp;
       + 60.0*(real(hh_1) &amp;
       + 24.0* real(jd_1)))

   if (mod(ccyy_2,4) == 0) then
      mmday(2) = 29

      if((mod(ccyy_2,100) == 0) .and. (mod(ccyy_2,400) /= 0)) then
         mmday(2) = 28
      end if
   end if

   if (ccyy_2 &gt;= ccyy_1) then
      jd_2 = dd_2 + diff_days
   else
      jd_2 = dd_2 - diff_days
   end if

   do i=1,mo_2-1
      jd_2=jd_2+mmday(i)
   end do

   s_2 = real(ss_2) &amp;
       + 60.0*(real(mi_2) &amp;
       + 60.0*(real(hh_2) &amp;
       + 24.0* real(jd_2)))

   da_diff_seconds = abs(s_1 - s_2)

   if (trace_use_dull) call da_trace_exit("da_diff_seconds")

end function da_diff_seconds