DIS 29500 specifies that in the year 1900, "for dates be-tween January 1 and February 28, WEEKDAY shall return a value for the day immediately prior to the cor-rect day" and also assigns a "serial value" to the non-existing day February 29, 1900. This is wrong. Software bugs should be fixed, not exported by means of ISO standards to the programs of competitors. See next comment

Make the calendar system configurable, with a default of the Gregorian calendar, allowing alter-natives to be specified by means of providing co-de for the computation of year, month, weekday and day-of-the-month. This mechanism can then be used for replicating the broken behavior of Microsoft Excel where that is desired.

Part 4, 3.17.4.1

te

Proposed Disposition of DIS 29500 Comment CH-0007 (Modified: 2008-01-13) We agree that regarding its treatment of dates, the specification is inconsistent with ISO 8601, specifically with respect to dates before 1900, and with its treatment of 1900 as a leap year. We will alter the specification to adopt a new date value space supporting ISO 8601 Gregorian years 0000-9999 with 1900 not being a leap year. However, the previously defined mode will be maintained for backward compatibility. We will use the same range of supported dates (0000-9999) as used by ISO 8601. If ISO 8601, itself, is extended beyond that point then this should be reconsidered for future versions of this specification. We will make the following specific changes: Part 4, §3.17.4, page 2,522, line 6: Each unique instant in SpreadsheetML time is represented as a distinct non-negative numeric serial value, which is made up of an integer date component and a fractional time component. Part 4, §3.17.4.1, page 2,522, lines 14­22, page 2,533, lines 1­20: There are two four different date bases for serial values: In the 1900 date-base system, the lower limit is January 1, 190 0 000 , which has serial value 1 - 693959 . The upper-limit is December 31, 9999, which has serial value 2,958,465. In the 1904 date-base system, the lower limit is January 1, 1904 0000 , which has serial value 0 - 695421 . The upper-limit is December 31, 9999, which has serial value 2,957,003. In the 1900 backward compatibility date-base system, the lower limit is January 1, 1900, which has serial value 1. The upper limit is December 31, 9999, which has serial value 2,958,465. In the 1904 backward compatibility date-base system, the lower limit is January 1, 1904, which has serial value 0. The upper limit is December 31, 9999, which has serial value 2,957,003. A serial value outside of the range for its date-base system is ill-formed. For legacy reasons, an implementation using the 1900 backward compatibility date-base system shall treat 1900 as though it was a leap year. [Note: That is, serial value 59 corresponds to February 28, 1900, and serial value 61 corresponds to March 1, 1900, the next day, allowing the (non-existent) date February 29, 1900 to have the serial value 60. end note] A consequence of this is that for dates between January 1, 1900 and February 28, 1900, WEEKDAY shall return a value for the day immediately prior to the correct day, so that the (non-existent) date February 29, 1900, has a day-of-the-week that immediately follows that of February 28, and immediately precedes that of March 1, 1900. As to which The date-base system an implementation uses by default or and whether it allows its users to switch between date-base systems, is unspecified. See §3.17.6.7 for XML-related details. [Note: As the XML allows either any date-base system to be used, an implementation must be able to deal with both all date-base systems. end note] [Note: The 1900 date-base system is the preferred system to be used by applications. The use of the 1900 backward compatibility or 1904 backward compatibility date-base system should be avoided. end note] For legacy reasons, an implementation using the 1900 date base system shall treat 1900 as though it was a leap year. [Note: That is, serial value 59 corresponds to February 28, and serial value 61 corresponds to March 1, the next day, allowing the (non-existent) date February 29 to have the serial value 60. end note] A consequence of this is that for dates between January 1 and February 28, WEEKDAY shall return a value for the day immediately prior to the correct day, so that the (non-existent) date February 29 has a day-of-the-week that immediately follows that of February 28, and immediately precedes that of March 1. [Example: For the 1900 date base system 1900 date-base system : DATEVALUE(”05-Aug-1893″) results in the serial value -2338.0000000… DATEVALUE("01-Jan-1900") results in the serial value 1 2 .0000000… DATEVALUE("03-Feb-1910") results in the serial value 3687.0000000… DATEVALUE("01-Feb-2006") results in the serial value 38749.0000000… DATEVALUE("31-Dec-9999") results in the serial value 2958465.0000000… For the 1904 date base system 1904 date-base system : DATEVALUE(”05-Aug-1893″) results in the serial value -3800.0000000… DATEVALUE("01-Jan-1904") results in the serial value 0.0000000… DATEVALUE("03-Feb-1910") results in the serial value 2225.0000000… DATEVALUE("01-Feb-2006") results in the serial value 37287.0000000… DATEVALUE("31-Dec-9999") results in the serial value 2957003.0000000… end example] Part 4, §3.17.4.1, page 2,524, lines 1­12: [Example: For the 1900 date base system 1900 date-base system : DATE(1893,8,5)+TIME(0,0,1) results in the serial value -2337.999989… DATE(1910,2,3)+TIME(10,5,54) results in the serial value 3687.4207639… DATE(1900,1,1)+TIME(12,0,0) results in the serial value 1 2 .5000000… DATE(9999,12,31)+TIME(23,59,59) results in the serial value 2958465.9999884… For the 1904 date base system 1904 date-base system : DATE(1893,8,5)+TIME(0,0,1) results in the serial value -3799.999989… DATE(1910,2,3)+TIME(10,5,54) results in the serial value 2225.4207639… DATE(1904,1,1)+TIME(12,0,0) results in the serial value 0.5000000… DATE(9999,12,31)+TIME(23,59,59) results in the serial value 2957003.9999884… end example] Part 4, §3.2.27, page 1,908, line 26: [Example: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/5/main" mlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> <fileVersion lastEdited="4" lowestEdited="4" rupBuild="4017"/> <workbookPr date1904="1" dateCompatibility="false" vbName="ThisWorkbook" defaultThemeVersion="123820"/> Part 4, §3.2.28, page 1,911, line 1: [Example: <workbookPr dateCompatibility="false" date1904="1" showObjects="none" saveExternalLinkValues="0" defaultThemeVersion="123820"/> end example] Part 4, §3.2.28, page 1,912: Parent Elements date1904 (Date 1904) Boolean value that indicates whether the date system used in the workbook is based in 1900 or 1904. A value of 1 or true indicates the workbook uses a date system based in 1904, either the 1904 date base or the 1904 backward compatibility date base, as specified by the value of the dateCompatibility attribute. A value of 0 or false indicates the workbook uses a date system based in 1900, either the 1900 date base or the 1900 backward compatibility date base, as specified by the value of the dateCompatibility attribute. (See §3.17.4.1 for the definition of the four valid date bases.) Specifies a boolean value that indicates whether the date systems used in the workbook starts in 1904. A value of on, 1, or true indicates the date system starts in 1904. A value of off, 0, or false indicates the workbook uses the 1900 date system, where 1/1/1900 is the first day in the system. The default value for this attribute is false. The possible values for this attribute are defined by the XML Schema boolean datatype. dateCompatibility (Date Compatibility) Specifies whether the date base specified by the date1904 attribute should be treated as a compatibility date base or should support the full ISO 8601 date range. A value of 1 or true indicates that the date system in use is either the 1900 backward compatibility date base or the 1904 backward compatibility date base, as specified by the value of the date1904 attribute. A value of 0 or false indicates that the date system is either the 1900 date base or 1904 date-base system, based on the ISO 8601 date range, as specified by the value of the date1904 attribute. (See §3.17.4.1 for the definition of the four valid date bases.) The default value for this attribute is true. The possible values for this attribute are defined by the XML Schema boolean datatype. Part 4, §3.2.28, page 1,915, line 3: The following XML Schema fragment defines the contents of this element: <complexType name="CT_WorkbookPr"> <attribute name="date1904" type="xsd:boolean" use="optional" default="false"/> <attribute name="dateCompatibility" type="xsd:boolean" use="optional" default="true"/> <attribute name="showObjects" type="ST_Objects" use="optional" default="all"/> <attribute name="showBorderUnselectedTables" type="xsd:boolean" use="optional" default="true"/> <attribute name="filterPrivacy" type="xsd:boolean" use="optional" default="false"/> <attribute name="promptedSolutions" type="xsd:boolean" use="optional" default="false"/> <attribute name="showInkAnnotation" type="xsd:boolean" use="optional" default="true"/> <attribute name="backupFile" type="xsd:boolean" use="optional" default="false"/> <attribute name="saveExternalLinkValues" type="xsd:boolean" use="optional" default="true"/> <attribute name="updateLinks" type="ST_UpdateLinks" use="optional" default="userSet"/> <attribute name="codeName" type="xsd:string" use="optional"/> <attribute name="hidePivotFieldList" type="xsd:boolean" use="optional" default="false"/> <attribute name="showPivotChartFilter" type="xsd:boolean" default="false"/> <attribute name="allowRefreshQuery" type="xsd:boolean" use="optional" default="false"/> <attribute name="publishItems" type="xsd:boolean" use="optional" default="false"/> <attribute name="checkCompatibility" type="xsd:boolean" use="optional" default="false"/> <attribute name="autoCompressPictures" type="xsd:boolean" use="optional" default="true"/> <attribute name="refreshAllConnections" type="xsd:boolean" use="optional" default="false"/> <attribute name="defaultThemeVersion" type="xsd:unsignedInt" use="optional"/> </complexType> Part 4, §3.8.31, page 2,140, line 10: To display As Use this code Years 1900date-base minimum value ­9999 yyyy Part 4, §3.8.31, page 2,140, line 12: See §3.17.4.1 for detail on possible date bases special handling of certain days in the year 1900 . Part 4, §3.17.6.7, page 2,530, lines 1­4: The date-base system is recorded in the Workbook part’s XML by the presence or absence of the date1904 dateCompatibility and date1904 attribute s of the workbookPr element. A value of 1 for this attribute indicates 1904. [Example: 1900 1900 date base : <workbookPr dateCompatibility="false" showObjects="all"/> 1904 1904 backwards compatibility date base : <workbookPr dateCompatibility ="true" date1904="true" "1" showObjects="all"/> end example] Part 4, §3.17.7.74, page 2,600, line 11: 3.17.7.74 DATE Name Type Description Year Number A positive number, truncated to an integer representing the year, truncated to integer, that together with month and day specifies the date whose serial value is to be computed. For the 1900 date base 1900 date base and 1904 date base system s : If year is in the range 0­ 18 99, inclusive, the year shall be interpreted as year + 1900. If year is in the range 1900 100 ­9999, inclusive, the year shall be interpreted as year. For the 1904 date base system: If year is in the range 4­1899, inclusive, the year shall be interpreted as year + 1900. If year is in the range 1904­9999, inclusive, the year shall be interpreted as year. For the 1900 backward compatibility date-base and 1904 backward compatibility date-base systems: If year is in the range 0­1899, inclusive, the year shall be interpreted as year + 1900. If year is in the range 1900­9999, inclusive, the year shall be interpreted as year. Part 4, §3.17.7.74, page 2,601, lines 10­14: 3.17.7.74 DATE However, if year is less than 0 or is greater-than or equal-to 10000, and the 1900 date base system is being used, #NUM! is returned. year is less than 4, is greater-than or equal-to 10000, is in the range 1900­1903, inclusive, and the 1904 date base system is being used, #NUM! is returned. If year is outside the acceptable range for the date base currently in use, #NUM! is returned. Part 4, §3.17.7.347, page 2,825, lines 17­19: 3.17.7.347 YEAR Return Type and Value: number ­ The Gregorian year for the date and/or time having the given date-value. For the 1900 date base system, the returned value shall be in the range 1900­9999. For the 1904 date base system, the returned value shall be in the range 1904­9999. The range of return values is determined by the date base currently in use (§3.17.4). Similar Comments: AU-0016 , BR-0046 , CA-0044 , CH-0006 , CH-0017 , CL-0013 , CL-0147 , CO-0035 , CO-0154 , CO-0155 , CO-0156 , CZ-0009 , DE-0030 , DE-0031 , DE-0032 , DE-0072 , DK-0033 , DK-0136 , DK-0137 , DK-0153 , FI-0013 , FR-0182 , FR-0183 , FR-0351 , GB-0300 , GB-0301 , GB-0304 , GB-0363 , GB-0364 , GH-0002 , GR-0003 , GR-0004 , GR-0005 , GR-0006 , IE-0002 , IN-0007 , IN-0057 , IN-0058 , IN-0061 , IN-0080 , IR-0001 , IR-0002 , KE-0054 , KE-0055 , MX-0005 , PE-0002 , PE-0003 , PH-0005 , PT-0085 , SG-0002 , US-0130 , US-0131 , UY-0003 , VE-0011 , VE-0060 , ZA-0014

Tag and Go

No Comments

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

  • Argentina (1)
  • Australia (30)
  • Austria (1)
  • Belgium (1)
  • Brazil (64)
  • Bulgaria (3)
  • Canada (79)
  • Chile (217)
  • China (1)
  • Colombia (237)
  • Czech Republic (75)
  • Denmark (168)
  • Ecma (76)
  • Ecuador (1)
  • Finland (15)
  • France (592)
  • Germany (162)
  • Ghana (12)
  • Greece (113)
  • India (82)
  • Iran (58)
  • Ireland (12)
  • Israel (33)
  • Italy (2)
  • Japan (82)
  • Jordan (1)
  • Kenya (81)
  • Malaysia (23)
  • Malta (5)
  • Mexico (7)
  • New Zealand (54)
  • Norway (12)
  • Peru (10)
  • Philippines (7)
  • Poland (4)
  • Portugal (118)
  • Singapore (2)
  • South Africa (17)
  • South Korea (25)
  • Spain (1)
  • Switzerland (19)
  • Thailand (1)
  • Tunisia (3)
  • Turkey (1)
  • UK (635)
  • Uruguay (18)
  • USA (288)
  • Venezuela (73)