TimePeriod.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 20:55:17 +0200
changeset 24417 03b083548da2
parent 22875 a389cb27c2fb
permissions -rw-r--r--
#REFACTORING by exept class: Smalltalk class changed: #recursiveInstallAutoloadedClassesFrom:rememberIn:maxLevels:noAutoload:packageTop:showSplashInLevels: Transcript showCR:(... bindWith:...) -> Transcript showCR:... with:...

"{ Package: 'stx:libbasic' }"

"{ NameSpace: Smalltalk }"

Object subclass:#TimePeriod
	instanceVariableNames:'startTime endTime'
	classVariableNames:''
	poolDictionaries:''
	category:'Magnitude-Time'
!

!TimePeriod class methodsFor:'documentation'!

documentation
"
    This class represents time periods defined by start and endtime.
    It will be as a representation of ISO8601 timeperiods.
"
!

examples
"
                                                                [exBegin]
     |p|
     p := TimePeriod startTime:(Date today) endTime:(Date tomorrow).
     p duration 
                                                                [exEnd]

                                                                [exBegin]
     |p|
     p := TimePeriod startTime:(Time now) endTime:(Date tomorrow).
     p duration 
                                                                [exEnd]

                                                                [exBegin]
     |p|
     p := TimePeriod startTime:(Timestamp now) endTime:(Timestamp fromString:'2050-01-01').
     p duration
                                                                [exEnd]
"
! !

!TimePeriod class methodsFor:'instance creation'!

startTime:startTimeArg endTime:endTimeArg 
    ^ self new startTime:startTimeArg endTime:endTimeArg 
! !

!TimePeriod methodsFor:'accessing'!

endTime
    ^ endTime
!

endTime:aTimeOrDate
    endTime := aTimeOrDate asTimestamp.
!

startTime
    ^ startTime
!

startTime:aTimeOrDate
    startTime := aTimeOrDate asTimestamp.
!

startTime:startTimeArg endTime:endTimeArg 
    startTime := startTimeArg asTimestamp.
    endTime := endTimeArg asTimestamp.
! !

!TimePeriod methodsFor:'queries'!

duration
    "return the difference between end- and starttime"

    ^ endTime - startTime

    "
     (TimePeriod startTime:(Date today) endTime:(Date tomorrow)) duration   -> 1d
     (TimePeriod startTime:(Time now) endTime:(Date tomorrow)) duration     -> rest duration till tomorrow
     (TimePeriod startTime:(Timestamp now) endTime:(Timestamp fromString:'2050-01-01')) duration
    "
! !

!TimePeriod class methodsFor:'documentation'!

version
    ^ '$Header$'
!

version_CVS
    ^ '$Header$'
! !