PRB: Week Starts Sunday and Ends Saturday for Format Function

Last reviewed: March 20, 1998
Article ID: Q110667
3.00 WINDOWS kbprg kbcode kbprb

The information in this article applies to:

  • Standard and Professional Editions of Microsoft Visual Basic for Windows, version 3.0

SYMPTOMS

For the date of Sunday January 2, 1994, the Format("01/02/94","ww") function returns week number 2 instead of week number 1.

NOTE: Visual Basic handles dates according to the Country settings in the International option of the Windows Control Panel. When the Country is set to United States, dates such as "01/05/94" are by default interpreted with the month followed by the day, as in mm/dd/yy. For most other Country settings, the day precedes the month, and "05/01/94" is interpreted as dd/mm/yy.

CAUSE

In the Format function, weeks start on a Sunday and go through the following Saturday. In 1994, January 1 is a Saturday, which is the only day in week 1. Week 2 of 1994 starts on Sunday January 2.

Therefore, the Format("01/01/94","ww") function returns 1, and Format("01/02/94","ww") returns 2.

STATUS

This behavior is by design.

MORE INFORMATION

Below are some of the format expressions for the day, week, month, and quarter, as supported by the Format function:

dd Displays the day as a number with a leading zero (01-31).

ddd Displays the day as an abbreviation (Sun-Sat).

dddd Displays the day as a full name (Sunday-Saturday).

w Displays the day of the week as a number (1 for Sunday through 7 for

       Saturday.)

ww Displays the week of the year as a number (1-53).

m Displays the month as a number without a leading zero (1-12). If m

       immediately follows h or hh, the minute rather than the month is
       displayed.

mm Displays the month as a number with a leading zero (01-12). If m
       immediately follows h or hh, the minute rather than the month is
       displayed.

mmm Displays the month as an abbreviation (Jan-Dec).

mmmm Displays the month as a full month name (January-December).

q Displays the quarter of the year as a number (1-4).

For more information, see the Format and Format$ function topics in the Visual Basic Help menu.

Steps to Reproduce Behavior

  1. Start a new project in Visual Basic. Form1 is created by default.

  2. Double-click the form. Add the following to the Form Load event code:

       Sub Form_Load ()
          form1.Show
          Print Format("01/01/94", "ww dddd")
          Print Format("01/05/94", "ww dddd")
       End Sub
    
    

  3. Start the program, or press the F5 key to see the following print:

          1 Saturday
          2 Wednesday
    

    The Format function correctly shows Wednesday January 5 as being in week 2 of 1994. Close the form to end the program.


Additional reference words: 3.00
KBCategory: kbprg kbcode kbprb
KBSubcategory: PrgOther


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: March 20, 1998
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.