Java 为什么二月是三月?
我无法解决这个问题 我写了这段代码:Java 为什么二月是三月?,java,android,simpledateformat,Java,Android,Simpledateformat,我无法解决这个问题 我写了这段代码: public static String getMonthName(int year, int month, int day){ Locale locale = Locale.getDefault(); SimpleDateFormat sdf = new SimpleDateFormat("MMMM",locale); Date date = new Date(); date.setDate(day); date.s
public static String getMonthName(int year, int month, int day){
Locale locale = Locale.getDefault();
SimpleDateFormat sdf = new SimpleDateFormat("MMMM",locale);
Date date = new Date();
date.setDate(day);
date.setMonth(month);
date.setYear(year);
return sdf.format(date);
}
它工作得很好,但是当月份=1(即二月)时,月份名称是三月而不是二月!为什么?
此代码在所有其他日期和月份都运行良好
还有另一种方法可以翻译月份名称吗
请帮助我……根据您调用函数的方式(例如使用当前日期作为2013年不存在的2月29日),您可以使月份自动递增 我建议使用此功能以避免问题:
public static String getMonthName(int month){
Locale locale = Locale.getDefault();
SimpleDateFormat sdf = new SimpleDateFormat("MMMM",locale);
Date date = new Date();
date.setDate(1);
date.setMonth(month);
date.setYear(2012);
return sdf.format(date);
}
根据您调用函数的方式(例如使用当前日期作为2013年不存在的2月29日),您可以使月份自动递增 我建议使用此功能以避免问题:
public static String getMonthName(int month){
Locale locale = Locale.getDefault();
SimpleDateFormat sdf = new SimpleDateFormat("MMMM",locale);
Date date = new Date();
date.setDate(1);
date.setMonth(month);
date.setYear(2012);
return sdf.format(date);
}
这是因为月份从零指数开始,所以您应该使用此逻辑
if(day >0)
{
day =day -1;
}
这是因为月份从零指数开始,所以您应该使用此逻辑
if(day >0)
{
day =day -1;
}
在获得月份名称时,日期和年份的相关性是什么?另外,你能发布几个输出吗?(例如,month=0、1、5、10?)在将其设置为date对象之前,逐月递增一次。它对我来说运行良好0=一月、1=二月和2=MarchMany感谢您的帮助我解决了njzk2问题。今天是29天,2月有28天,因此,当过程超过29天时,结果是3月而不是2月…在获得月份名称时,日期和年份的相关性是什么?此外,您可以发布几个输出吗?(例如,month=0、1、5、10?)在将其设置为date对象之前,逐月递增一次。它对我来说运行良好0=一月、1=二月和2=MarchMany感谢您的帮助我解决了njzk2问题。今天是29日,2月有28天,所以当过程通过29日,结果是3月而不是2月…非常感谢。2021年2月28日也是我花了一整天寻找解决方案的日子。这对我来说很好。非常感谢。2021年2月28日也是我花了一整天寻找解决方案的日子。这对我来说很有效。