

日付の大小比較の結果が直観に反する動きをします。

[code]

    x = #1899-12-30 00:00:00#
    y = #1899-12-30 12:00:00#
    If x < y Then
        MsgBox "OK" ' こちらが表示される
    Else
        MsgBox "NG"
    End If
    
    x = #1899-12-29 00:00:00#
    y = #1899-12-29 12:00:00#
    If x < y Then
        MsgBox "OK"
    Else
        MsgBox "NG" ' こちらが表示される
    End If
    
[/code]

なぜですか？


CC BY-SA 3.0
2014-12-19T01:18:54.400
2072
2014-12-19T01:18:54.400
4482
question
vbs
VBSでのDate同士の大小比較の仕様を教えてください


[「VBSでのDate同士の加算の仕様を教えてください」の回答](https://ja.stackoverflow.com/questions/1897/vbs%E3%81%A7%E3%81%AEdate%E5%90%8C%E5%A3%AB%E3%81%AE%E5%8A%A0%E7%AE%97%E3%81%AE%E4%BB%95%E6%A7%98%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84#1903)にあるように、内部表現によって大小が比較されるからです。

OKが表示される例は、内部表現が`0.0`になる日付(1899/12/30)以降のため、内部表現の大小と日付の大小が一致します。

しかし、NGが表示される例は、内部表現が`0.0`になる日付より前の日付のため、内部表現の大小と日付の大小が一致しなくなります。  
そのため、直観に反した挙動を示すことになります。


CC BY-SA 3.0
2014-12-19T01:18:54.400
2073
2014-12-19T01:18:54.400
2017-04-13T12:52:38.920
-1
4482
2072
answer