日付/時刻関数のほとんどに対し、日時の値を表す引数としてDateTimeオブジェクトまたはTimeSpanオブジェクトを指定できます。DateTimeはDATE(2003,7,4)関数などの結果として返されるオブジェクトであり、TimeSpanはTIME(12,0,0)関数などの結果として返されるオブジェクトです。 Excelとの互換性を維持するために、日時を数値(37806.5など)で指定することも、または文字列("7/4/2003 12:00"など)で指定することもできます。 数値と文字列は、DateTimeクラスのインスタンスとして変換されます。
日付を数値で表す場合は「x.y」の形式を使用します。xは1899年12月30日以降の日数を表し、yは1日未満の小数値を表します。 つまり、小数点左側の数値は日付を表します。 時刻を表す数値は、0から0.99999999の範囲の小数値です。これは、0:00:00(午前12時0分0秒)から23:59:59(午後11時59分59秒)の時刻を表します。
次の3つの数式は、同じ結果となります。
YEAR(DATE(2004,8,9))
YEAR(38208)
YEAR("8/9/2004")
Excelで有効な日付の範囲は、1900年1月1日から9999年12月31日までです。一方、.NET frameworkではDateTimeクラスのインスタンスの有効範囲は0001年1月1日から9999年12月31日までです。SpreadJSでは一般的に、範囲が広いほうの.NET frameworkの有効範囲をサポートしています。 Excelとの互換性を維持するために、一部の関数では狭い範囲の日付だけが有効にされています。たとえば、DATE関数では、1900年1月1日以降の日付しか入力できません。
ExcelとOLEオートメーションではいずれも、日時は倍精度型によって表されます。倍精度値の整数部分は、基準日以降の日数を表します。 Excelでは、基準日として1900年1月1日が使用され、1900年はうるう年として扱われます。 これに対しMicrosoft社は、OLEオートメーションでの基準日として1899年12月31日が使用されるように修正しています。 OLEオートメーションと同様、SpreadJSのスプレッドシートでも1900年をうるう年とはみなさず、基準日を1899年12月31日としています。