以下代码提供了错误的信息:
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
public class test {
public static void main(String[] args) {
GregorianCalendar fmt = new GregorianCalendar(2000, 7, 3);
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String result = df.format(fmt.getTime());
System.out.println("fmt: " + result);
}
}
Run Code Online (Sandbox Code Playgroud)
它输出:
fmt:2000年8月3日
虽然我需要月份为7月,因为我已将月份设定为7?
我的猜测是,你期待的是第7个月July,但是这个month值是0,所以7月将由a表示6.
month - 用于在日历中设置MONTH日历字段的值.月值基于0.例如,1月份为0.
您可能还想输入4位数的日期
你最终会得到以下结果
GregorianCalendar fmt = new GregorianCalendar(1975, 6, 3);
Run Code Online (Sandbox Code Playgroud)
这是GregorianCalendar的文档
正如其他人所说,您当前的代码存在两个问题:
要解决此问题,您可以创建GregorianCaledaras new GregorianCaledar(1975, 6, 3).或者甚至更好,停止直接使用这个类,而是使用抽象类Calendar:
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 1975);
calendar.set(Calendar.MONTH, Calendar.JULY);
calendar.set(Calendar.DATE, 3);
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String result = df.format(calendar.getTime());
System.out.println("fmt: " + result);
Run Code Online (Sandbox Code Playgroud)
为什么用Calendar而不是GregorianCalendar?因为您应该始终使用抽象类/接口而不是类实现.
| 归档时间: |
|
| 查看次数: |
18134 次 |
| 最近记录: |