Monday, November 08, 2010 at 12:02 AM.
system.verbs.builtins.date.netStandardString
on netStandardString (localDate) {
<<Thursday, November 11, 1999 at 2:31:14 AM by AR
<<Implemented as a kernel verb in Frontier 6.1.
<<Old code
<<on netStandardString (localDate)
<<Return a string that looks like: Sat, 29 Nov 1997 00:51:47 GMT
<<It's the worldwide Internet standard formatting for strings.
<<The parameter, a date, is assumed to be a date in the local time zone.
<<Convert it to the GMT version of the date, then build the formatted string.
<<I did a bunch of email back and forth with Alan German on this.
<<For a spec see http://www.informatik.uni-halle.de/www/http/HTTP1.0-ID_15.html#HEADING14
<<
<<local (ctz = date.getCurrentTimeZone ())
<<local (gmtDate = localDate - ctz)
<<
<<if localDate >= 0 and gmtDate < 0 //check for wrap-around
<<gmtDate = date (0)
<<
<<local (day, month, year, hour, minute, second)
<<date.get (gmtDate, @day, @month, @year, @hour, @minute, @second)
<<
<<local (s)
<<case date.dayOfWeek (gmtDate)
<<1
<<s = "Sun"
<<2
<<s = "Mon"
<<3
<<s = "Tue"
<<4
<<s = "Wed"
<<5
<<s = "Thu"
<<6
<<s = "Fri"
<<7
<<s = "Sat"
<<s = s + ", " + string.padWithZeros (day, 2) + " "
<<case month
<<1
<<s = s + "Jan"
<<2
<<s = s + "Feb"
<<3
<<s = s + "Mar"
<<4
<<s = s + "Apr"
<<5
<<s = s + "May"
<<6
<<s = s + "Jun"
<<7
<<s = s + "Jul"
<<8
<<s = s + "Aug"
<<9
<<s = s + "Sep"
<<10
<<s = s + "Oct"
<<11
<<s = s + "Nov"
<<12
<<s = s + "Dec"
<<s = s + " " + year + " "
<<s = s + string.padWithZeros (hour, 2) + ":"
<<s = s + string.padWithZeros (minute, 2) + ":"
<<s = s + string.padWithZeros (second, 2) + " GMT"
<<return (s)
kernel (date.netStandardString)}
<<bundle //test code
<<dialog.notify (date.netStandardString (clock.now ()))
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.