有些編程語言表示日期的類型非常奇怪, 月份從0開始, 日期卻從1開始. 例如Javascript的Date, Java的java.util.Calendar, C的tm.
追根溯源的話, Javascript和Java的奇怪特性似乎是從C繼承下來的. 那麼C當年為什麼要設計成這個樣子呢?
追根溯源的話, Javascript和Java的奇怪特性似乎是從C繼承下來的. 那麼C當年為什麼要設計成這個樣子呢?
2
nybux Jul 11, 2013
一月二月,只是中国人的说法。老外点月份不是按数字点的,所以月份从0开始。而日期都是按数字点的。
|
5
013231 OP @nybux 這種說法恐怕解釋不通. 且不說編程時月份確實是用數字表示的, 如果你在stackoverflow上搜索過就會知道, 許多外國人對這個問題同樣不解; 另外, 也有很多編程語言(例如C#和Python)月份就是從1開始的.
|
6
nybux Jul 11, 2013
|
7
nybux Jul 11, 2013
years and days are considered numbers in spoken language, but months have their own names. So because January is the first month it will be stored as offset 0, the first array element.
|
8
nybux Jul 11, 2013
其实星期也有同样的问题。老外星期从星期天开始,所以星期天就是0,星期一就是1。这样我们还可以接受。如果老外也是从星期一开始。那发觉星期一是0。那习惯中国点星期的方式的人,就会感到很困惑了。
|
9
nybux Jul 11, 2013
另外月份可能需要以其他形式输出,所以我觉得从0开始也会很方便。
比如: const char* monstr[] = {"一月", "二月", "三月", ...}; 打印的时候直接就可以 printf("%s-%d\n", monstr[mon], date);了,如果从1开始,那就要麻烦一点了。 |