簡體   English   中英

Java GregorianCalendar我做錯了什么? 錯誤的約會?

[英]Java GregorianCalendar What am I doing wrong? Wrong date?

您好GregorianCalendar有問題。

有什么問題?

結果是2010/6/1而不是2010/05/31?

package test;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class Main {

    public static void main(String[] args) {
        Calendar cal = new GregorianCalendar(2010, 5, 31);
        System.out.println(cal.get(Calendar.YEAR) + "/" + cal.get(Calendar.MONTH) + "/" + cal.get(Calendar.DAY_OF_MONTH));
    }

}

Java從0開始計算數月,因此5是6月。 使用常量總是更安全。 所以我會寫:

Calendar cal = new GregorianCalendar(2010, Calendar.MAY, 31);

這同樣適用於您的日歷打印輸出。 如果你做了cal.get(Calendar.MONTH)那么你得到6個意思是7月。

這是因為月號從零開始,因此您嘗試設置6月31日,但6月只有30天,因此它將轉換為7月1日。

Toadd得到上述答案,因為6月份沒有第31天日歷將其提升到下一個有效日期,因為Calendar.setLenient默認為true。

暫無
暫無

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

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