我已經嘗試了很多在 ruby?? 中撰寫驗證日期函式的方法,它處理所有邊緣情況,例如,如果當前日期根據閏年有效,并且如果日期以無效格式傳遞,如 20-05-2022 它應該回傳 false ,它應該只有 yyyy-mm-dd 格式的有效日期格式。
我在這里問之前嘗試過的函式(這個函式是我從 Stackoverflow 鏈接之一獲得的):
require 'date'
def validate_date?(string)
date_format = '%Y-%m-%d'
DateTime.strptime(date, date_format)
true
rescue ArgumentError
false
end
但是這個函式的問題是它不能處理一些無效的日期格式,比如:
validate_date('202200-06-02') -> returns true (As the date is in incorrect format)
validate_date('2022-060-002') -> returns true (As the date is in incorrect format)
如果應用了這些無效的日期格式,我想回傳 false。
歡迎任何建議或改進,甚至我還應該嘗試撰寫一個可用于各種邊緣情況的適當 validate_date 函式。
uj5u.com熱心網友回復:
如果您使用的是 Rails,則可以將方法與正則to_date運算式結合使用
def valid_date?(string)
!!(string.to_date && /^\d{4}-\d{1,2}-\d{1,2}$/ =~ string)
rescue Date::Error
false
end
如果你不是
require 'date'
def valid_date?(string)
!!(Date.parse(string) && /^\d{4}-\d{1,2}-\d{1,2}$/ =~ string)
rescue Date::Error
false
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/489074.html
上一篇:RubyonRails路由問題
