home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / news / 4611 / fw16d.ins / SOURCE / CLASSES / TIME.PRG < prev    next >
Text File  |  1994-06-03  |  3KB  |  93 lines

  1. // Managing Time Objects!
  2. // (c) FiveWin - Data tools
  3.  
  4. #include "FiveWin.ch"
  5.  
  6. //----------------------------------------------------------------------------//
  7.  
  8. CLASS TTime
  9.  
  10.    DATA   nTime
  11.  
  12.    METHOD New( nHours, nMinutes, nSeconds ) CONSTRUCTOR
  13.  
  14.    METHOD System() CONSTRUCTOR
  15.  
  16.    METHOD AddHours( nHours )     INLINE ::nTime += ( nHours * 3600 )
  17.    METHOD AddMinutes( nMinutes ) INLINE ::nTime += ( nMinutes * 60 )
  18.    METHOD AddSeconds( nSeconds ) INLINE ::nTime += nSeconds
  19.  
  20.    METHOD cAdd( nHours, nMinutes, nSeconds )
  21.    METHOD cSub( nHours, nMinutes, nSeconds )
  22.  
  23.    METHOD cGetTime()
  24.  
  25.    METHOD SysChange() INLINE SysTime( ::nTime )
  26.  
  27. ENDCLASS
  28.  
  29. //----------------------------------------------------------------------------//
  30.  
  31. METHOD New( nHours, nMinutes, nSeconds ) CLASS TTime
  32.  
  33.    DEFAULT nHours := 0, nMinutes := 0, nSeconds := 0
  34.  
  35.    ::nTime = If( nHours != 0, nHours * 3600, 0 ) + ;
  36.              If( nMinutes != 0, ( nMinutes * 60 ), 0 ) + nSeconds
  37.    ::nTime %= 86400
  38.  
  39. return nil
  40.  
  41. //----------------------------------------------------------------------------//
  42.  
  43. METHOD System() CLASS TTime
  44.  
  45.    local cTime := Time()
  46.  
  47.    ::nTime = ( Val( SubStr( cTime, 1, 2 ) ) * 3600 ) + ;
  48.              ( Val( SubStr( cTime, 4, 2 ) ) *   60 ) + ;
  49.                Val( SubStr( cTime, 7, 2 ) )
  50. return nil
  51.  
  52. //----------------------------------------------------------------------------//
  53.  
  54. METHOD cAdd( nHours, nMinutes, nSeconds ) CLASS TTime
  55.  
  56.    local oTime := TTime():New( nHours, nMinutes, nSeconds )
  57.  
  58.    ::nTime += oTime:nTime
  59.    ::nTime %= 86400
  60.  
  61. return ::cGetTime()
  62.  
  63. //----------------------------------------------------------------------------//
  64.  
  65. METHOD cSub( nHours, nMinutes, nSeconds ) CLASS TTime
  66.  
  67.    local oTime
  68.  
  69.    if ValType( nHours ) == "N"
  70.       oTime = TTime():New( nHours, nMinutes, nSeconds )
  71.    else
  72.       oTime = nHours   // We have there an Object Time already
  73.    endif
  74.  
  75.    ::nTime -= oTime:nTime
  76.    ::nTime %= 86400
  77.  
  78. return ::cGetTime()
  79.  
  80. //----------------------------------------------------------------------------//
  81.  
  82. METHOD cGetTime() CLASS TTime
  83.  
  84.    local nTemp    := ::nTime
  85.    local nHours   := Int( nTemp / 3600 )
  86.    local nMinutes := nTemp - ( nHours * 3600 )
  87.    local nSeconds := nMinutes % 60
  88.  
  89. return StrZero( nHours, 2 ) + ":" + StrZero( Int( nMinutes / 60 ), 2 ) + ":" + ;
  90.        StrZero( nSeconds, 2 )
  91.  
  92. //----------------------------------------------------------------------------//
  93.