考慮在Windows 7系統上執行以下代碼運行:日期驗證與時鐘命令
% info patchlevel
8.6.4
% clock scan "1995-01-35" -format "%Y-%m-%d"
791856000
% clock format [clock scan "1995-01-35" -format "%Y-%m-%d"] -format "%Y-%m-%d"
1995-02-04
%
我碰到這種情況試圖確定一個字符串是一個有效的日期的時候,我期待第一個時鐘掃描失敗,因爲35不是有效的一天,但是會發生的是我在1月1日後35天得到一個日期。
在我的代碼中,我現在將第二個時鐘命令的輸出與原始輸入進行比較,如果結果不同,則判定該字符串不是真正的有效日期。
是否有更好的方法來驗證日期,這是時鐘命令的預期行爲,我找不到它在手冊頁中描述的時鐘?
這本手冊的部分涉及到日期計算不時鐘format命令,你的is_valid_date PROC確實是我結束了驗證日期的方法。 – Jackson
'時鐘掃描'命令是這樣工作的,因爲它需要處理一些'時鐘添加'不起作用的現實世界的情況。這很奇怪,但這是你的日期:他們很奇怪...... –