我想知道如何在Ruby on Rails中处理和存储生日之类的日期,因为确切的日期或月份可能是未知的,而且有些生日是公元前。
MySQL似乎支持“1990-00-00”这样的日期,它可以用来存储没有月和日的年份,但BC日期似乎不可能。由于MySQL支持直到9999年的日期,而我只需要直到今天的生日,因此可以使用更高的日期来表示BC日期(9999 = -1,9998 = -2,...),但这看起来很复杂,很乱。
我想知道如何在Ruby on Rails中处理和存储生日之类的日期,因为确切的日期或月份可能是未知的,而且有些生日是公元前。
MySQL似乎支持“1990-00-00”这样的日期,它可以用来存储没有月和日的年份,但BC日期似乎不可能。由于MySQL支持直到9999年的日期,而我只需要直到今天的生日,因此可以使用更高的日期来表示BC日期(9999 = -1,9998 = -2,...),但这看起来很复杂,很乱。
1条答案
按热度按时间dy2hfwbg1#
切换到Postgresql?哈哈,开个玩笑。有一些解决方案建议在后台给所有日期加上一个常量,然后在显示之前减去它。看起来很混乱。不过Rails并不关心你的日期是多久以前的。所以你可以将这些日期存储为字符串,比如'2023-01-29'或'-5000-01-29',然后在Rails中解析它们:
正如你所看到的,Rails处理日期非常好,可以将许多不同的字符串格式解析为日期,你可以覆盖模型中列的setter/getter:
现在,当您有一个Foo的示例并调用
.bar
时,它将从DB中的字符串转换为日期,当在setter方法中给定日期时,它将为您将其转换为字符串。