Thanks!
On Oct 28, 2006, at 6:59 PM, Marielle Lange wrote:

While we are on the topic of dates, I've been thinking about creating a "countdown" calendar, clocking the number of days remaining between today's date and some future date (March 31, 20010 specifically). Any tips on how I can do this? Do I have to convert dates into seconds in order to subtract one from the other? Thanks.


Hi Marian,

In case this helps, I wrote a minimalist countdown utility for christmas last year:
http://revolution.widged.com/stacks/?category=widgets_ecards
Christmas Countdown

You will also find below various date manipulation functions. They were written rapidly and haven't been extensively tested. You are very welcome to improve them. That library can be found at <http://codes.widged.com/?q=node/1>, along with other code and libraries.

Other websites with useful codes are listed at:
<http://codes.widged.com/?q=node/660>

There are some time related tutorials at So smarts Software, for instance (<http://www.sosmartsoftware.com/? r=revolution_didacticiels&l=en>)

Marielle


/* ____________________________________________________________
|
|   Date Processing Routines
|
|   @Author:         Marielle  Lange
|   @Company:     Widged.com (http://widged.com)
|   @Date:            10 Apr 2006
|   @Version:        0.1
|   @Changes since last version:  N/A
| @License: Creative Commons Attribution 2.5 License http://creativecommons.org/licenses/by/2.5/
|   @Dependency:    -
*/

on DiffBetweenDates
  put field "DateFrom" into tDateFrom
  put field "DateTo" into tDateTo
  convert tDateFrom from system date to dateItems
  convert tDateTo from system date to dateItems
  put NbYearsBetweenTwoDates(tDateFrom,tDateTo) into field "NbYears"
  put NbMonthsBetweenTwoDates(tDateFrom,tDateTo) into field "NbMonths"
  put NbWeeksBetweenTwoDates(tDateFrom,tDateTo) into field "NbWeeks"
  put NbDaysBetweenTwoDates(tDateFrom,tDateTo) into field "NbDays"
end DiffBetweenDates


----------------------------------------------------------------------
--  WeekdayFirstOfMonth (function)
--
--
--
function WeekdayFirstOfMonth pYear, pMonth
  --- First of Month
  put pMonth & "/1/" & pYear into tDate
  convert tDate to dateItems
  return item 7 of tDate
end WeekdayFirstOfMonth

----------------------------------------------------------------------
-- NbDaysInMonth (function)
--
--
--
function NbDaysInMonth pYear, pMonth
  put (pMonth & "/1/" & pYear) into tDate
  convert tDate from date to dateItems
  put 0 into item 3 of tDate
  add 1 to item 2 of tDate
  convert tDate from dateItems to dateItems
  return (item 3 of tDate)
end NbDaysInMonth


----------------------------------------------------------------------
-- NbDaysBetweenTwoDates (function)
--
-- pStart and pEnd are in dateItems format
--
function NbDaysBetweenTwoDates pStart, pEnd
  put NbMonthsBetweenTwoDates(pStart, pEnd) into tMonthsDiff
  put (item 1 of pStart) into tStartYear
  put (item 2 of pStart) into tStartMonth
  repeat with x = 1 to tMonthsDiff
    if x = 1 then
      put tStartMonth into tMonth
      put tStartYear into tYear
      put empty into tDaysPerMonth
      -- put empty into message
    end if
    if tMonth > 12 then
      put 1 into tMonth
      add 1 to tYear
    end if
    put NbDaysInMonth(tYear,tMonth) into item x of tDaysPerMonth
    add 1 to tMonth
  end repeat
  put sum(tDaysPerMonth) into tNbDays
  return (tNbDays - (item 3 of pStart) + (item 3 of pEnd))
end NbDaysBetweenTwoDates

----------------------------------------------------------------------
-- NbWeeksBetweenTwoDates (function)
--
-- pStart and pEnd are in dateItems format
--
function NbWeeksBetweenTwoDates pStart, pEnd
  put NbDaysBetweenTwoDates(pStart, pEnd) into tNbDays
  return trunc(tNbDays/7)
end NbWeeksBetweenTwoDates


----------------------------------------------------------------------
-- NbMonthsBetweenTwoDates (function)
--
-- pStart and pEnd are in dateItems format
--
function NbMonthsBetweenTwoDates pStart, pEnd
  ----- Nb of Years, Months, weeks -----
  put NbYearsBetweenTwoDates(pStart, pEnd) into tNbYears
  put ((item 2 of pEnd) - (item 2 of pStart))  into tNbMonthsDiff
  ----- Handle cases were from 08/2005 to 06/2006 -----
  if tNbMonths < 0 then
    add 12 to tNbMonthsDiff
    add -1 to tNbYears
  end if
  return tNbMonthsDiff+ (12 * tNbYears) e
end NbMonthsBetweenTwoDates

----------------------------------------------------------------------
-- NbYearsBetweenTwoDates (function)
--
-- pStart and pEnd are in dateItems format
-- Return an integer, with the number of years
function NbYearsBetweenTwoDates pStart, pEnd
  return ((item 1 of pEnd) - (item 1 of pStart))
end NbYearsBetweenTwoDates


----------------------------------------------------------------------
-- MonthsAsArray (function)
--
-- Returns an Array with the Month Names, as MonthsA
--
function MonthsAsArray
  ----- Create an array with the Months Names -----
  put empty into MonthsA
  repeat with x = 1 to 12
    put x & "/1/00" into tDate
    convert tDate to long date
    put word 2 of tDate into MonthsA[x]
  end repeat
  return MonthsA
end MonthsAsArray

----------------------------------------------------------------------
--  weekNumber
--
--
--
function weekNumber pDateItems
-- Needs the 7, because any day before may below to a week in the previous year
  put pDateItems into tJanuaryFirst
  put 1 into item 2 of tJanuaryFirst
  put 1 into item 3 of tJanuaryFirst
  convert tJanuaryFirst from dateitems to dateitems
put 0 into tAdd; if item -1 of tJanuaryFirst <> 1 then put -1 into tAdd
  return (NbWeeksBetweenTwoDates(tJanuaryFirst,pDateItems) + tAdd)
end weekNumber

----------------------------------------------------------------------
-- StartDateIsBeforeEndOne
--
-- Returns true or false, according to situation
--
function StartDateIsBeforeEndOne pStart, pEnd
  put true into tTest
----- Checking that the Start date is earlier than the End one -----
  If item 1 of pStart > item 1 of pEnd then
answer "problem here, the ending year is earlier than the starting one"
    put false into tTest
else if (item 1 of pStart) = (item 1 of pEnd) and (item 2 of pStart) > (item 2 of pEnd) then answer "problem here, the ending month is earlier than the starting one (in the same year)"
    put pStart & cr & pEnd
    put false into tTest
else if (item 2 of pStart) = (item 2 of pEnd) and (item 3 of pStart) > (item 3 of pEnd) then answer "problem here, the ending day is earlier than the starting one (in the same month)"
    put false into tTest
  end if
  return tTest
end StartDateIsBeforeEndOne



_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to