Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,50 @@
DateTime extend [
setYear: aNum [ year := aNum ]
].
Object subclass: DateTimeTZ [
|dateAndTime timeZoneDST timeZoneName timeZoneVar|
DateTimeTZ class >> new [ ^(super basicNew) ]
DateTimeTZ class >> readFromWithMeridian: aStream andTimeZone: aDict [
|me|
me := self new.
^ me initWithMeridian: aStream andTimeZone: aDict
]
initWithMeridian: aStream andTimeZone: aDict [ |s|
dateAndTime := DateTime readFrom: aStream copy.
s := aStream collection asString.
s =~ '[pP][mM]'
ifMatched: [ :m |
dateAndTime := dateAndTime + (Duration days: 0 hours: 12 minutes: 0 seconds: 0)
].
aDict keysAndValuesDo: [ :k :v |
s =~ k
ifMatched: [ :x |
dateAndTime := dateAndTime setOffset: (v at: 1).
timeZoneDST := (v at: 2) setOffset: (v at: 1).
timeZoneVar := (v at: 3).
timeZoneDST setYear: (self year). "ignore the year"
timeZoneName := k
]
].
^ self
]
setYear: aNum [ dateAndTime setYear: aNum ]
year [ ^ dateAndTime year ]
timeZoneName [ ^timeZoneName ]
+ aDuration [ |n|
n := dateAndTime + aDuration.
(n > timeZoneDST) ifTrue: [ n := n + timeZoneVar ].
^ (self copy dateTime: n)
]
dateTime [ ^dateAndTime ]
dateTime: aDT [ dateAndTime := aDT ]
].

View file

@ -0,0 +1,29 @@
|s abbrDict dt|
s := 'March 7 2009 7:30pm EST'.
"Build a abbreviation -> offset for timezones (example)"
abbrDict := Dictionary new.
abbrDict at: 'EST'
put: { (Duration days: 0 hours: -5 minutes: 0 seconds: 0).
(DateTime year: 2009 month: 3 day: 8 hour: 2 minute: 0 second: 0).
(Duration days: 0 hours: 1 minutes: 0 seconds: 0) }.
dt := DateTimeTZ readFromWithMeridian: (s readStream) andTimeZone: abbrDict.
dt := dt + (Duration days: 0 hours: 12 minutes: 0 seconds: 0).
"let's print it"
('%1 %2 %3 %4:%5%6 %7' %
{
(dt dateTime) monthName asString.
(dt dateTime) day.
(dt dateTime) year.
(dt dateTime) hour12.
(dt dateTime) minute.
(dt dateTime) meridianAbbreviation asString.
dt timeZoneName.
}) displayNl.
(dt dateTime) asUTC displayNl.