亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

日歷返回錯誤的月份

日歷返回錯誤的月份

catspeake 2019-10-10 16:28:52
Calendar rightNow = Calendar.getInstance();String month = String.valueOf(rightNow.get(Calendar.MONTH));執行以上代碼段后,month的值為10而不是11。
查看完整描述

3 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

月份從0而不是1進行索引,因此10是11月,而11是12月。


查看完整回答
反對 回復 2019-10-10
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

從許多答案可以清楚地看出:月份從0開始。


提示:您應該使用SimpleDateFormat來獲取月份的字符串表示形式:


Calendar rightNow = Calendar.getInstance();

java.text.SimpleDateFormat df1 = new java.text.SimpleDateFormat("MM");

java.text.SimpleDateFormat df2 = new java.text.SimpleDateFormat("MMM");

java.text.SimpleDateFormat df3 = new java.text.SimpleDateFormat("MMMM");

System.out.println(df1.format(rightNow.getTime()));

System.out.println(df2.format(rightNow.getTime()));

System.out.println(df3.format(rightNow.getTime()));

輸出:


11

Nov

November

注意:輸出可能會有所不同,這是特定于語言環境的。


查看完整回答
反對 回復 2019-10-10
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

正如幾個人指出的那樣,Java中Calendar和Date類返回的月份從0而不是1開始索引。因此0是1月,而本月11月是10。


您可能想知道為什么會這樣。起源在于與POSIX標準功能ctime,gmtime并且localtime,它接受或返回一個time_t與以下字段(從結構的人3的ctime):


int tm_mday;    /* day of month (1 - 31) */

int tm_mon;     /* month of year (0 - 11) */

int tm_year;    /* year - 1900 */

該API幾乎完全復制到Java 1.0中的Java Date類中,并從那里完整地復制到Java 1.1中的Calendar類中。Sun推出了Calendar時,解決了最明顯的問題-公歷中2001年由Date類中的值101表示的事實。但是我不確定為什么他們沒有將日和月值更改為至少在索引上保持一致(從零或一)。直到今天,這種不一致和相關的混亂仍然存在于Java(和C)中。


查看完整回答
反對 回復 2019-10-10
  • 3 回答
  • 0 關注
  • 485 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號