OK, here’s a version that incorporates your suggestions. It may look like it could be further simplified but the idea here is to generate a single record that accounts for every use of date or time I have in various scripts.
This runs significantly faster than using the pure appleScript version I was using before.
Eventually I’ll save it as a script library and add a dictionary.
use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions
use framework "Foundation"
use framework "AppKit"
property formatter : {}
DateTimeFormatter()
set aDate to current date
set timeDateResults to {}
repeat 52 * 7 times
set thisDateTimeRecord to my FormatDateTime(aDate)
set the end of timeDateResults to longDayDate of thisDateTimeRecord & " " & tm of thisDateTimeRecord
set minuteMult to random number from 1 to 60
set dayMult to random number from 1 to 7
set aDate to aDate + minuteMult * minutes
set aDate to aDate + dayMult * days
end repeat
on DateTimeFormatter()
set formatter to current application's NSDateFormatter's new()
formatter's setShortWeekdaySymbols:{"Sun.", "Mon.", "Tues.", "Wed.", "Thurs.", "Fri.", "Sat."}
formatter's setShortMonthSymbols:{"Jan.", "Feb.", "March", "April", "May", "June", "July", "Aug.", "Sept.", "Oct.", "Nov.", "Dec."}
formatter's setAMSymbol:"a.m."
formatter's setPMSymbol:"p.m."
end DateTimeFormatter
on FormatDateTime(someDate)
set dateTimeRecord to {longDayDate:"", abbDayDate:"", shrtDt:"", shortDate:"", slugDate:"", slugDateSort:"", timeString:"", slugTime:"", wwww:"", ww:"", mmmm:"", mmm:"", mm:"", m:"", dd:"", d:"", yy:"", yyyy:"", tm:"", hh:"", h:"", min:"", mn:"", ampm:""}
set aPattern to "EEEE EEE MMMM MMM MM dd yy yyyy h:mm a mm HH H a"
(formatter's setDateFormat:aPattern)
set formattedDateTime to (formatter's stringFromDate:someDate)
set formattedDateTime to formattedDateTime's stringByReplacingOccurrencesOfString:" 12:00 a.m." withString:" midnight"
set formattedDateTime to formattedDateTime's stringByReplacingOccurrencesOfString:" 12:00 p.m." withString:" noon"
set formattedDateTime to formattedDateTime's stringByReplacingOccurrencesOfString:":00" withString:""
set saveTID to AppleScript's text item delimiters
set AppleScript's text item delimiters to {tab}
set {wwww, ww, mmmm, mmm, mm, dd, yy, yyyy, tm, min, hh, h, ampm} to text items of (formattedDateTime as text)
set AppleScript's text item delimiters to saveTID
tell dateTimeRecord
set its wwww to wwww
set its ww to ww
set its mmmm to mmmm
set its mmm to mmm
set its mm to mm
set its m to mm as integer
set its dd to dd
set its d to dd as integer
set its yy to yy
set its yyyy to yyyy
set its tm to tm
set its hh to hh
set its h to h as integer
set its min to min
set its mn to min as integer
set its ampm to ampm
set its longDayDate to (wwww & ", " & mmmm & " " & (its d) as text) & ", " & yyyy
set its abbDayDate to (ww & ", " & mmm & " " & (its d) as text) & ", " & yyyy
set its shrtDt to (its m as text) & "/" & (its d as text) & "/" & yy
set its shortDate to mm & "/" & dd & "/" & yyyy
set its slugDateSort to yy & "-" & mm & "-" & dd
set its slugDate to dd & "-" & mm & "-" & yy
set its slugTime to hh & "-" & mm
end tell
return dateTimeRecord
end FormatDateTime