Validation 每个整数都是可能的年份值吗?
我刚刚读了这篇关于一些人的令人兴奋和搞笑的帖子。四十号是: 每个整数都是理论上可能的一年Validation 每个整数都是可能的年份值吗?,validation,date,time,Validation,Date,Time,我刚刚读了这篇关于一些人的令人兴奋和搞笑的帖子。四十号是: 每个整数都是理论上可能的一年 这意味着每个整数都不是理论上可能的年份。这里的否定情况是什么?什么整数不是理论上可能的年份?根据上下文,0不是有效的年份号。在我们目前使用的公历(以及它的前身儒略历法)中,公元前1年(公元前1年)紧接着是公元前1年(公元前1年)。(对于公历引入之前的日期,我们可以使用儒略历或罗马历) 在编程环境中,这可能直接相关,也可能不直接相关。不同的语言、库和框架以不同的方式表示年份,例如,支持从0000到9999的年
这意味着每个整数都不是理论上可能的年份。这里的否定情况是什么?什么整数不是理论上可能的年份?根据上下文,
0
不是有效的年份号。在我们目前使用的公历(以及它的前身儒略历法)中,公元前1年(公元前1年)紧接着是公元前1年(公元前1年)。(对于公历引入之前的日期,我们可以使用儒略历或罗马历)
在编程环境中,这可能直接相关,也可能不直接相关。不同的语言、库和框架以不同的方式表示年份,例如,支持从0000
到9999
的年份,其中0000
为1 BCE;更广泛的范围可以由双方协议支持。C标准库的一些实现只能表示从1901年到2038年的时间;另一些,使用64位时间
可以代表更大的范围,通常将-1
、0
和1
视为连续年份
最终,您需要检查文档,了解您正在使用的任何语言/库/框架。有趣的问题,但与编程无关……例如,没有0年@约翰尼3136不同意,因为这对于设计系统来说很重要。@约翰尼3136:你从来没有写过一个必须处理年份数字的程序?@DavidGrinberg你对“重要的一般编程知识”的定义和我完全不同。多态性是“重要的通用编程知识”,作用域和线程也是如此。这事实并非如此。内置的日期时间类对于大多数程序员来说已经足够了。从的转换还有几个额外的警告——比如,“你在为哪个国家检查日期?”根据西方日历,俄罗斯的Oktober革命发生在11月。(或者反过来说,我想不起来了。)@Jongware:是的,但与这个问题无关。理论上可能的年份是相同的。关于ISO-8601或天文学家传统上使用的计时,答案是错误的。零在ISO-8601中有效。您可以将其用作
java.time.LocalDate
的输入年份。只有一个事实是整数是有效的。这取决于日历系统和/或数据库(某些数据库限制有效年数范围为1-9999)等。120k信誉,您会发现“0”是对离题问题的正确答案?简单的“0”可能是完全错误的,不过,正如Meno Hochschild所指出的:现有日历的年份为0,从理论上讲,创造另一个是完全可能的。答案需要限定“……在公历(或儒略)中”。