DateBench

Capabilities

DateBench(TM) provides an operational definition of Year 2000 Compliance. Because of the Year 2000 crisis, many organizations now want to specify that software handles dates correctly. But what does "handle dates correctly" mean? DateBench provides an answer for at least some date operations.

DateBench consists of several parts described below.

Definition of Year 2000 Compliance

Date compliance can be viewed at three levels:

Basic Compliance

Basic compliance means that software or hardware performs all date operations correctly over the range of dates required for the application of the software.

Implementation Compliance

Implementation compliance means that the software meets the criteria under basic compliance and adheres to implementation criteria below.

Formal Compliance

Formal compliance means that the software conforms to the criteria for implementation compliance and a formal proof exists that the date operations anywhere in the software are equivalent to those in DateBench.

Formal Specification

The specification is written in ML. Although executable, the specification is intended to describe the desired results of the calculation, not necessarily the way the calculation should be done. Therefore, the specification should not be taken as a description of a desired algorithm. In some cases, the specification is an inefficient way of computing the results.

WayDate Source Code

This section contains links to the Java source code for DateBench.

WayDate
This class contains several algorithms for date manipulation.
WayDateException
Represents information about an illegal date. This is the class of exceptions thrown by WayDate methods.
Holiday
This class calculates the dates of federal holidays.
WayException
Represent information about an Exception.
WayString
A collection of string routines.
WayUtilException
Java exceptions.

JavaDoc for the source code is here.

Test Suite

A test suite using JUnit to test the DateBench code.

Java Applets to Check Accuracy

Use the Java applets to check the accuracy of date calculations in other programs.

by William Shaffer