Большинство двухзначных лет уже в прошлом, поэтому хорошим значением для отсчета является 30. Например, если кто-то печатает '66, это, скорее всего, означает 1966. Фактически, это также отсечение, которое Excel использует, когда два цифра дата передается в ячейку даты.
У меня было приложение, которое принимало файлы с разделителями табуляции из таблиц Excel, и они часто приходились с двузначными годами. Я написал этот патч ActiveRecord для обезьяны, чтобы позволить ActiveRecord обрабатывать двухзначные годы для полей даты:
class ActiveRecord::ConnectionAdapters::Column
class << self
protected
# If a year comes in with two digits, let's try to guess whether it's in the
# 20th or 21st century. Typically, Ruby pivots this decision around the
# year '69, but this is a bad guess. Since most of our dates will arrive in
# two digit format because of an Excel import, we should use the same pivot
# value that Excel uses. Excel pivots the decision around the year '30
# which seems to be a better guess anyway.
def new_date_with_two_digit_year_support(year, mon, mday)
year += 2000 if (0..29).include? year
year += 1900 if (30..99).include? year
new_date_without_two_digit_year_support(year, mon, mday)
end
alias_method_chain :new_date, :two_digit_year_support
end
end
Это не совсем общий вопрос, о котором просил вопрос, но, надеюсь, это поможет.