• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Variable keeps changing with date manipulation in Snow Leopard
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Variable keeps changing with date manipulation in Snow Leopard


  • Subject: Variable keeps changing with date manipulation in Snow Leopard
  • From: Max Bonilla <email@hidden>
  • Date: Sat, 12 Sep 2009 15:59:02 -0400
  • Thread-topic: Variable keeps changing with date manipulation in Snow Leopard

Title: Variable keeps changing with date manipulation in Snow Leopard
Hello,

Adding to the discussion currently going on.  I’m having a problem with a script in Snow Leopard.  I wrote a handler to manipulate dates according (I think) to the new requirements, but, strangely, the variables I use can’t hold the values well.  In the handler below (createRandomTime) the variables change values when they should not.  For example, the variable LunchEndRelV should have a value of 1:30 PM, and it does when it is created.  But you’ll notice at the end of the handler, the time stamp in it has changed to the time of the last variable created using the MakeTimesRelativeToDate handler (which is startTime, and not LunchEndRelV). (In the snippet below, I’ve eliminated most of the handlers in the original script replacing them with sample data).


on createRandomTime(AvailableDates, NonAvailablestartTime, NonAvailableEndTime, DayBeginsV, DayEndsV, lunchbeginsv, LunchEndsV)
    set DayStart to 9
    set DayEndNUM to 16
    set xV to random number from 1 to (count of AvailableDates)
    set DateVar to item xV of AvailableDates
    set HourV to (random number from DayStart to (DayEndNUM))
    set HourV to HourV & ":00" as string
    set LunchStartRelV to my MakeTimesRelativeToDate(lunchbeginsv, DateVar)
    --Lunch ends at 1:30 PM on the next variable (LunchEndRelV) and it should stay that way for the duration of the script. Yet, see next note below.
    set LunchEndRelV to my MakeTimesRelativeToDate(LunchEndsV, DateVar) --> time 1:30 PM of a given date
    set DayStartRelV to my MakeTimesRelativeToDate(DayBeginsV, DateVar)
    set DayEndRelV to my MakeTimesRelativeToDate(DayEndsV, DateVar)
    set startTime to my MakeTimesRelativeToDate(HourV, DateVar)
    
    
    --It seems that the time keeps changing in all variables depending on the values that are sent to the handler MakeTimesRelativeToDate, and that the variables just follow that.  They are not "set" to stay; instead, they
--change internally. For example if you step through this handler and look at the value of LunchEndRelV, you'll notice that lunch ends at 1:30 PM the first (and only) time that the
    --MakeTimesRelativeToDate is invoked for setting the LunchEndRelV variable.  
    --But when you look at the value of LunchEndRelV in the last instance (below), the value has changed (as have all variables in the handler that use the MakeTimesRelativeToDate) even if no explicit
    --call was made to change the value of LunchEndRelV.
    return LunchEndRelV --> no longer 1:30 PM
end createRandomTime

The MakeTimesRelativeToDate handler has this code:

on MakeTimesRelativeToDate(TimeStringVar, DateStamp)
    set TimePropertiesV to my ConvertTimeToNumbers(TimeStringVar)
    set hours of DateStamp to item 1 of TimePropertiesV
    set minutes of DateStamp to item 2 of TimePropertiesV
    return DateStamp
end MakeTimesRelativeToDate


And a functional sample script that shows the problem is this:

on ConvertTimeToNumbers(TimeString)
    if TimeString contains ":" then
        --This section makes a time string into a number (hours only)
        set x to offset of ":" in TimeString
        set HourStringV to (characters 1 thru (x - 1)) of TimeString as string
        set HourVar to HourStringV as number
        --This section makes a time string into a number (minutes only)
        set MinutesStringV to (characters (x + 1) thru (x + 2)) of TimeString as string
        set MinutesVar to MinutesStringV as number
        set TimeStringV to {HourVar, MinutesVar}
    else
        try
            set HourVar to TimeString as number
        on error
            set HourVar to 0
        end try
        set TimeStringV to {HourVar, 0}
    end if
end ConvertTimeToNumbers

on MakeTimesRelativeToDate(TimeStringVar, DateStamp)
    set TimePropertiesV to my ConvertTimeToNumbers(TimeStringVar)
    set hours of DateStamp to item 1 of TimePropertiesV
    set minutes of DateStamp to item 2 of TimePropertiesV
    return DateStamp
end MakeTimesRelativeToDate

on createRandomTime(AvailableDates, NonAvailablestartTime, NonAvailableEndTime, DayBeginsV, DayEndsV, lunchbeginsv, LunchEndsV)
    set DayStart to 9
    set DayEndNUM to 16
    set xV to random number from 1 to (count of AvailableDates)
    set DateVar to item xV of AvailableDates
    set HourV to (random number from DayStart to (DayEndNUM))
    set HourV to HourV & ":00" as string
    set LunchStartRelV to my MakeTimesRelativeToDate(lunchbeginsv, DateVar)
    --Lunch ends at 1:30 PM on the next variable (LunchEndRelV) and it should stay that way for the duration of the script. Yet, see next note below.
    set LunchEndRelV to my MakeTimesRelativeToDate(LunchEndsV, DateVar)
    set DayStartRelV to my MakeTimesRelativeToDate(DayBeginsV, DateVar)
    set DayEndRelV to my MakeTimesRelativeToDate(DayEndsV, DateVar)
    set startTime to my MakeTimesRelativeToDate(HourV, DateVar)
    
    --LunchEndRelV changes to a different time every time the script is run (because HourV is a random number). But this is not what I want.
    return LunchEndRelV
end createRandomTime

on run
    set DayBeginsV to "8:30"
    set DayEndsV to "16:30"
    set lunchbeginsv to "12:00"
    set LunchEndsV to "13:30"
    set NonAvailablestartTime to {date "Monday, November 23, 2009 12:00:00 PM", date "Wednesday, November 7, 2007 1:30:00 PM", date "Sunday, April 19, 2009 9:15:00 AM", date "Monday, October 8, 2007 9:00:00 AM"}
    set NonAvailableEndTime to {date "Monday, November 23, 2009 1:00:00 PM", date "Wednesday, November 7, 2007 2:30:00 PM", date "Sunday, April 19, 2009 10:05:00 AM", date "Monday, October 8, 2007 12:00:00 PM"}
    set BlockedDatesV to {date "Thursday, March 19, 2009 12:00:00 AM", date "Thursday, September 25, 2008 12:00:00 AM", date "Tuesday, May 12, 2009 12:00:00 AM", date "Tuesday, April 7, 2009 12:00:00 AM"}
    set AvailableDates to {date "Monday, September 14, 2009 12:00:00 AM", date "Tuesday, September 15, 2009 12:00:00 AM", date "Wednesday, September 16, 2009 12:00:00 AM", date "Thursday, September 17, 2009 12:00:00 AM", date "Friday, September 18, 2009 12:00:00 AM"}
    set RandomTime to createRandomTime(AvailableDates, NonAvailablestartTime, NonAvailableEndTime, DayBeginsV, DayEndsV, lunchbeginsv, LunchEndsV)
end run

Of course, the RandomTime variable is not supposed to receive the LunchEndRelV value; I changed the handler to do so as an illustration of the problem.

The script worked really well before, but under Snow Leopard the variables are no longer holding the value in the way I would expect them.  I think it must have something to do with changing the property of the date, as Snow Leopard is supposed to handle dates now, but I am not sure.  The documentation and the discussion on dates on the list has not helped me see the cause.  Can someone explain why and perhaps suggest a way to make the variables hold the times?  Thanks.

Max
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
AppleScript-Users mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
Archives: http://lists.apple.com/archives/applescript-users

This email sent to email@hidden

  • Follow-Ups:
    • Re: Variable keeps changing with date manipulation in Snow Leopard
      • From: Yvan KOENIG <email@hidden>
    • Re: Variable keeps changing with date manipulation in Snow Leopard
      • From: "Mark J. Reed" <email@hidden>
  • Prev by Date: Re: Do Shell Script
  • Next by Date: Re: Variable keeps changing with date manipulation in Snow Leopard
  • Previous by thread: Re: Applescript Editor preferences
  • Next by thread: Re: Variable keeps changing with date manipulation in Snow Leopard
  • Index(es):
    • Date
    • Thread