簡體   English   中英

為什么GregorianCalendar返回0而不是MONTH?

[英]Why GregorianCalendar returns 0 instead of MONTH?

我在創建日期時遇到問題。

Calendar gc = new GregorianCalendar();
int leto = randBetween(2001, 2020);
gc.set(GregorianCalendar.YEAR, leto);
int dan= randBetween(1, gc.getActualMaximum(GregorianCalendar.DAY_OF_YEAR));
gc.set(GregorianCalendar.DAY_OF_YEAR, dan);
//   System.out.println(gc.get(GregorianCalendar.YEAR) + "-" +
//     gc.get(GregorianCalendar.MONTH) + "-" +
//     gc.get(GregorianCalendar.DAY_OF_MONTH));

public static int randBetween(int start, int end) {
  return start + (int)Math.round(Math.random() * (end - start));
}

我有一個生成日期的函數,但是在這個函數中有很多失敗。 我收到許多未設置MONTH值的日期。

31,6,2004 1,7,2004
23,0,2013 24,0,2013
19,0,2008 20,0,2008 
31,9,2014 31,9,2014

但是我不知道為什么會這樣嗎?

此代碼不是“失敗”,但是沒有給出預期的結果。

您看到的日期是:

23,0,2013  -- 23rd of January, 2013.
31,6,2013  -- 31st of July, 2013.

也就是說, month不是基於1的,與日期不同,它是基於0的。

請放心,這是Java Date API的常見錯誤,可能唯一認為合乎邏輯的人就是提出此API的人,甚至可能不再是他們了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM