Knowledge Base |

# PRB: Unexpected Date Value Returned from Format Function

Article ID: 113327

Article Last Modified on 5/5/2001

APPLIES TO

- Microsoft Visual Basic 3.0 Professional Edition

This article was previously published under Q113327

## SYMPTOMS

When using the Date, Time, or Format function to return information about a Date/Time variable, you may get results other than what you expected. For Example, the following prints January:

       Print Format$(4, "MMMM") ' Print the Month represented by number 4

## CAUSE

The value 4 when interpreted as a date is Jan 3, 1900. Dates are stored in Variants of VarType 7 (Date) as double-precision numbers. This number represents a date from January 1, 100 through December 31, 9999 -- where January 1, 1900 is 2. Negative numbers represent dates prior to December 30, 1899.

## RESOLUTION

To get the string "April" to print when the only date information available is the Month 4, use a function such as DateSerial and supply it with an arbitrary Day and Year.

### Step-by-Step Example

1. Start a new project in Visual Basic. Form1 is created by default.
2. Add a command button (Command1) to the form.
3. Add the following code to the Command1_Click event:

             Sub Command1_Click ()

                Dim AnyDay As Integer
                Dim AnyYear As Integer

                AnyDay = 1      ' Allowed values are: 1 to 31
                AnyYear = 1994  ' Allowed values are: 100 to 9999

                Print Format$(DateSerial(AnyYear, 4, AnyDay), "MMMM")

             End Sub

4. Run the program.

The following will print:
April

## STATUS

This behavior is by design.

Additional query words: kbvbp300 kbDSupport FORMAT FORMAT$ DATESERIAL vb4sweep

Keywords: kbprb KB113327