FormatDate() not usefull for time differences over 24h?

Just starting out? Need help? Post your questions and find answers here.
User avatar
Lord
Addict
Addict
Posts: 847
Joined: Tue May 26, 2009 2:11 pm

FormatDate() not usefull for time differences over 24h?

Post by Lord »

Hi!

I tried to display some time differences with FormatDate().
But when displaying for time differences over 24 hours,
"%dd" in FormatDate() always gives one more day than
the difference is.
What do I overlook? Is FormatDate() not useable for
time differences when also using "%dd" in format string?

Test code:

Code: Select all

OneSecond.i = 1
OneMinute.i = 60
OneHour.i   = OneMinute*OneMinute
OneDay.i    = 24*OneHour

Debug "----h, m, s"
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", 0)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneSecond)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneSecond*2)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneMinute)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneHour)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay*2)
Debug "----h, m, s"
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", 0)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneSecond)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneMinute)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneMinute+OneSecond)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneHour)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneHour+OneSecond)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneHour+OneMinute)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneHour+OneMinute+OneSecond)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneSecond)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneMinute)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneMinute+OneSecond)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneHour)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneHour+OneSecond)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneHour+OneMinute)
Debug FormatDate("%hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneHour+OneMinute+OneSecond)
Debug "----d, h, m, s"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", 0)+"  should be: 00, 00, 00, 00"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneSecond)+"  should be: 00, 00, 00, 01"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneSecond*2)+"  should be: 00, 00, 00, 02"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneMinute)+"  should be: 00, 00, 01, 00"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneHour)+"  should be: 00, 01, 00, 00"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay)+"  should be: 01, 00, 00, 00"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay*2)+"  should be: 02, 00, 00, 00"
Debug "----d, h, m, s"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", 0)+"  should be: 00, 00, 00, 01"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneSecond)+"  should be: 00, 00, 00, 01"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneMinute)+"  should be: 00, 00, 01, 00"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneMinute+OneSecond)+"  should be: 00, 00, 01, 01"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneHour)+"  should be: 00, 01, 00, 00"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneHour+OneSecond)+"  should be: 00, 01, 00, 01"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneHour+OneMinute)+"  should be: 00, 01, 01, 00"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneHour+OneMinute+OneSecond)+"  should be: 01, 00, 00, 01"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay)+"  should be: 01, 00, 00, 00"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneSecond)+"  should be: 01, 00, 00, 01"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneMinute)+"  should be: 01, 00, 01, 00"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneMinute+OneSecond)+"  should be: 01, 00, 01, 01"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneHour)+"  should be: 01, 01, 00, 00"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneHour+OneSecond)+"  should be: 01, 01, 00, 01"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneHour+OneMinute)+"  should be: 01, 01, 01, 00"
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", OneDay+OneHour+OneMinute+OneSecond)+"  should be: 01, 01, 01, 01"
Debug "----"
Debug "Please wait 11 seconds"
Date1.i=Date()
Delay(11000)
Date2.i=Date()
DeltaDate=Date2-Date1
Debug FormatDate("%dd Day(s), %hh Hour(s), %ii Minute(s), %ss Second(s)", DeltaDate)
My output:
----h, m, s
00 Hour(s), 00 Minute(s), 00 Second(s)
00 Hour(s), 00 Minute(s), 01 Second(s)
00 Hour(s), 00 Minute(s), 02 Second(s)
00 Hour(s), 01 Minute(s), 00 Second(s)
01 Hour(s), 00 Minute(s), 00 Second(s)
00 Hour(s), 00 Minute(s), 00 Second(s)
00 Hour(s), 00 Minute(s), 00 Second(s)
----h, m, s
00 Hour(s), 00 Minute(s), 00 Second(s)
00 Hour(s), 00 Minute(s), 01 Second(s)
00 Hour(s), 01 Minute(s), 00 Second(s)
00 Hour(s), 01 Minute(s), 01 Second(s)
01 Hour(s), 00 Minute(s), 00 Second(s)
01 Hour(s), 00 Minute(s), 01 Second(s)
01 Hour(s), 01 Minute(s), 00 Second(s)
01 Hour(s), 01 Minute(s), 01 Second(s)
00 Hour(s), 00 Minute(s), 00 Second(s)
00 Hour(s), 00 Minute(s), 01 Second(s)
00 Hour(s), 01 Minute(s), 00 Second(s)
00 Hour(s), 01 Minute(s), 01 Second(s)
01 Hour(s), 00 Minute(s), 00 Second(s)
01 Hour(s), 00 Minute(s), 01 Second(s)
01 Hour(s), 01 Minute(s), 00 Second(s)
01 Hour(s), 01 Minute(s), 01 Second(s)
----d, h, m, s
01 Day(s), 00 Hour(s), 00 Minute(s), 00 Second(s) should be: 00, 00, 00, 00
01 Day(s), 00 Hour(s), 00 Minute(s), 01 Second(s) should be: 00, 00, 00, 01
01 Day(s), 00 Hour(s), 00 Minute(s), 02 Second(s) should be: 00, 00, 00, 02
01 Day(s), 00 Hour(s), 01 Minute(s), 00 Second(s) should be: 00, 00, 01, 00
01 Day(s), 01 Hour(s), 00 Minute(s), 00 Second(s) should be: 00, 01, 00, 00
02 Day(s), 00 Hour(s), 00 Minute(s), 00 Second(s) should be: 01, 00, 00, 00
03 Day(s), 00 Hour(s), 00 Minute(s), 00 Second(s) should be: 02, 00, 00, 00
----d, h, m, s
01 Day(s), 00 Hour(s), 00 Minute(s), 00 Second(s) should be: 00, 00, 00, 01
01 Day(s), 00 Hour(s), 00 Minute(s), 01 Second(s) should be: 00, 00, 00, 01
01 Day(s), 00 Hour(s), 01 Minute(s), 00 Second(s) should be: 00, 00, 01, 00
01 Day(s), 00 Hour(s), 01 Minute(s), 01 Second(s) should be: 00, 00, 01, 01
01 Day(s), 01 Hour(s), 00 Minute(s), 00 Second(s) should be: 00, 01, 00, 00
01 Day(s), 01 Hour(s), 00 Minute(s), 01 Second(s) should be: 00, 01, 00, 01
01 Day(s), 01 Hour(s), 01 Minute(s), 00 Second(s) should be: 00, 01, 01, 00
01 Day(s), 01 Hour(s), 01 Minute(s), 01 Second(s) should be: 01, 00, 00, 01
02 Day(s), 00 Hour(s), 00 Minute(s), 00 Second(s) should be: 01, 00, 00, 00
02 Day(s), 00 Hour(s), 00 Minute(s), 01 Second(s) should be: 01, 00, 00, 01
02 Day(s), 00 Hour(s), 01 Minute(s), 00 Second(s) should be: 01, 00, 01, 00
02 Day(s), 00 Hour(s), 01 Minute(s), 01 Second(s) should be: 01, 00, 01, 01
02 Day(s), 01 Hour(s), 00 Minute(s), 00 Second(s) should be: 01, 01, 00, 00
02 Day(s), 01 Hour(s), 00 Minute(s), 01 Second(s) should be: 01, 01, 00, 01
02 Day(s), 01 Hour(s), 01 Minute(s), 00 Second(s) should be: 01, 01, 01, 00
02 Day(s), 01 Hour(s), 01 Minute(s), 01 Second(s) should be: 01, 01, 01, 01
----
Please wait 11 seconds
01 Day(s), 00 Hour(s), 00 Minute(s), 11 Second(s)
Image
wilbert
PureBasic Expert
PureBasic Expert
Posts: 3870
Joined: Sun Aug 08, 2004 5:21 am
Location: Netherlands

Re: FormatDate() not usefull for time differences over 24h?

Post by wilbert »

FormatDate is used to format a Date.
Each month starts with day 1, not day 0.
That's why you get one more.

Also be aware that this way you can not support a negative time difference or time differences of more than 31 days.
Windows (x64)
Raspberry Pi OS (Arm64)
User avatar
Lord
Addict
Addict
Posts: 847
Joined: Tue May 26, 2009 2:11 pm

Re: FormatDate() not usefull for time differences over 24h?

Post by Lord »

Hi Wilbert!
wilbert wrote:FormatDate is used to format a Date.
Each month starts with day 1, not day 0.
That's why you get one more.

Also be aware that this way you can not support a negative time difference or time differences of more than 31 days.
That makes sense. Thanks for explaination. :idea:
Image
Post Reply