Ok, as promised, here is a code sample that covers the major concepts in this thread that has made working with dates, and converting them back and forth to AS values as required, really quite easy in ASOC, thanks to Craig and Shane’s help above.
In the sample code all that is needed in IB is for a Date Picker(NSDatepicker) control to be placed in the window and connected (control-drag) to the app delegate class, selecting the DoWithTheDate_(sender) as the IB Action. Also connect FROM app delegate back to the datepicker selecting as the IB Outlet" datePicker " You’re done, then build and run. I suggest you follow along in the code as the dialog’s present the variations on the date you selected to, prevent “death by dialog”, or you can replace the Dislay Dialog command with log, and view the results in the Run Menu> Console.
I have also commented the code where appropriate. Note that there are no date comparision method, but they should be easy to cobble together with the key code from the above posts as well as from the code snippets in this sample.
Once again, thanks all for the help on this thread.
All the best
script TestAppDelegate property parent : class "NSObject" property datePicker : missing value property theDate : "" property theCal : "" property theComponents : "" property dateFormatter : "" property theString : "" on DoWithTheDate_(sender) --PART 1 - Changing the seconds in a date instance to zero -- set theDate property after user makes selection from the picker set theDate to my datePicker's dateValue() --set theCal var to a new(empty) instance of the calendar set theCal to current application's class "NSCalendar"'s currentCalendar() -- unpack the components of theDate to a variable set theComponents to theCal's components_fromDate_(254, theDate) -- Don't bother with seconds so set them to :00 (top of the clock) -- this will allow the user to pick a time to the minute -- for a task and prevent the task from firing at anytime -- but on the top of the minute theComponents's setSecond_(0) -- reset theDate variable with the with new seconds we set above -- by rolling the components back up into a new NSDate set my theDate to theCal's dateFromComponents_(theComponents) -- Finally adjust the datePicker to the new value -- you should adjust the datepicker's attributes in IB to not show the seconds my datePicker's setDateValue_(theDate) -- -- this dialog shows the resut from above with the seconds set to :00 display dialog ("Part one - Result of changing seconds to :00 - Date is shown in International format " & my datePicker's dateValue()'s |description| as string) -- END OF PART 1 --PART 2 - Converting the NSDate to an AS date and working with it -- Set new variables with values unpacked from theComponents -- variable we worked with above and use them -- to make a new AS date set theYear to theComponents's |year|() set theMonth to theComponents's |month|() set theDay to theComponents's |day|() set theHour to theComponents's hour() set theMinute to theComponents's minute() set theSecond to theComponents's |second|() -- instantiate a new AS date to work with set theDate to current date display dialog ("PART 2 - Dialog 1 - This is the new AS date instance before revision " & theDate as string) display dialog ("Part 2 - Dialog 2 - This is the AS Date's time string " & time string of (theDate)) -- now revise theDate with our variables from above set day of theDate to 1 -- important set seconds of theDate to theSecond set year of theDate to theYear set month of theDate to theMonth set day of theDate to theDay set hours of theDate to theHour set minutes of theDate to theMinute display dialog ("PART 2 - Dialog 3 - This is the new AS date with Datepickers components and seconds revised from above " & theDate as string) display dialog (("PART 2 - Dialog 4 - This is the value for the seconds from midnight for processing in AS if desired " & theDate's time) as string) --END OF PART 2 -- PART 3 - Using a formatter to get a string value directly from an NSDate -- first set up a new variable set theString to theDate -- put a fresh NSDate instance from the datePicker into theDate replacing the AS date from PART 2 set theDate to my datePicker's dateValue() -- Instantiate a dateFormatter. Note there is no formatter required in IB in the datepicker -- as we are creating it in the code set dateFormatter to current application's class "NSDateFormatter"'s alloc()'s init() -- set the dateformatter's attributes. Play with them to change the -- values in the dialog. dateFormatter's setDateStyle_(3) -- 0 = none, 1 = short, 2 = med, 3 = long, 4 = full dateFormatter's setTimeStyle_(4) -- 0 = none, 1 = short, 2 = med, 3 = long, 4 = full -- use the dateFormatter's get method to get a string from theDate set theString to dateFormatter's stringFromDate_(theDate) display dialog ("PART 3 - a nicely formatted date string for presentation to the user - " & theString as string) end DoWithTheDate_ on applicationWillFinishLaunching_(aNotification) -- set the datePicker to now so the user doesn't see a strange date in the picker set theDate to current application's class "NSDate"'s |date|() --initialize the date property we will be working with my datePicker's setDateValue_(theDate) -- Insert code here to initialize your application before any files are opened end applicationWillFinishLaunching_ on applicationShouldTerminate_(sender) -- Insert code here to do any housekeeping before your application quits return true end applicationShouldTerminate_ end script