gpt4 book ai didi

Java GregorianCalendar 字段

转载 作者:行者123 更新时间:2023-11-30 08:12:22 24 4
gpt4 key购买 nike

我尝试将字符串转换为 GregorianCalendar,然后检查它。下面,我发布我的代码。我真的很困惑为什么字段看起来不对。非常感谢您的帮助。

public class test{

private static final ArrayList<String> MONTH_OF_YEAR = new ArrayList(Arrays.asList( "Jan", "Feb", "Mar", "Apr", "May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"));

static GregorianCalendar date;

public static void main(String[] args){
String t = "28-Mar-2099 11294.94 11279.65";
String[] splitStr = t.split(" ");

System.out.println(splitStr[0]);

date = ConvertToDate(splitStr[0]);
System.out.println(date.getTime());

System.out.println(date.DAY_OF_MONTH);
System.out.println(date.MONTH);
System.out.println(date.YEAR);

}


private static GregorianCalendar ConvertToDate(String dt){
String[] splitStr = dt.split("-");
if(splitStr.length != 3){
throw new IllegalArgumentException();
}
int dayOfMonth = Integer.parseInt(splitStr[0]);
int year = Integer.parseInt(splitStr[2]);
int month = MONTH_OF_YEAR.indexOf(splitStr[1]);
if(month < 0 || month > 11){
throw new IllegalArgumentException();
}
return new GregorianCalendar(year, month, dayOfMonth);
}
}

输出是这样的:

28-Mar-2099
Sat Mar 28 00:00:00 PDT 2099
5
2
1

谁能帮我解释为什么字段与日期不匹配?

最佳答案

这些:

System.out.println(date.DAY_OF_MONTH);
System.out.println(date.MONTH);
System.out.println(date.YEAR);

应该是:

System.out.println(date.get(Calendar.DAY_OF_MONTH));
System.out.println(date.get(Calendar.MONTH));
System.out.println(date.get(Calendar.YEAR));

(然后记住 Calendar.MONTH 是从 0 开始的。)

DAY_OF_MONTH 等值是常量,基本上表示您要获取哪个字段。不幸的是,日历 API 从根本上来说非常糟糕:( 如果您可以改用 Joda Time 或 Java 8 java.time API,它们都会好得多。

另请注意,实际上无需编写您自己的日历解析代码 - 它已经存在于 SimpleDateFormat 等中。

关于Java GregorianCalendar 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30542704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com