FIX: TTOD() Returns Incorrect Date with Time of 12:00:00 AM (139835)



The information in this article applies to:

  • Microsoft Visual FoxPro for Windows 3.0

This article was previously published under Q139835

SYMPTOMS

When you use TTOD() on a variable containing a time of 12:00:00 AM, TTOD() returns an incorrect date. If one second is added to the date value, TTOD() returns the correct date.

CAUSE

12 AM is considered to be the start of a new day, so at 12 AM, TTOD() should display the date for the next day. However, TTOD() miscalculates and incorrectly displays the date for the previous day.

STATUS

Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article. This problem has been fixed in Visual FoxPro 5.0 for Windows.

MORE INFORMATION

The TTOD() function returns a date value from a datetime function or value.

Steps to Reproduce Problem

In the following example, a variable is set to 10/24/95 at 10 PM. Two hours are added to the value, one at a time. Then the date is checked to make sure it has switched to 10/25/95 12:00:00 AM.

In the Command window, type the following commands:
x = {10/24/95 22:00:00} && Initialize date variable to 10 PM Oct 24, 1995
? type("x")             && Should return 'T' for DateTime
?x                      && Should return 10/24/95
x=x+3600                && Add one hour to the time
?x                      && Should display 11 PM on Oct 24, 1995
x=x+3600                && Add another hour to the time
?x                      && Should display 12 AM Oct 25, 1995
?ttod(x)                && Will display 10/24/95 when you expect 10/25/95
				
The following two lines show that adding one second to 10/25/95 12:00:00 AM does allow TTOD() to return 10/25/95 as expected:
x=x+1                   && Add one second for 12:00:01 AM Oct 25, 1995
?ttod(x)                && Should return 10/25/95
				

Modification Type:MajorLast Reviewed:3/24/2000
Keywords:kbbug kbvfp500fix KB139835