Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
50
Task/Date-manipulation/Smalltalk/date-manipulation-1.st
Normal file
50
Task/Date-manipulation/Smalltalk/date-manipulation-1.st
Normal 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 ]
|
||||
|
||||
].
|
||||
29
Task/Date-manipulation/Smalltalk/date-manipulation-2.st
Normal file
29
Task/Date-manipulation/Smalltalk/date-manipulation-2.st
Normal 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue