我正在尝试在我的应用程序中使用此代码。
Calendar c = Calendar.getInstance();
c.set(2012,12,23,10,45, 0);
System.out.println("TimeInMillis:" + c.getTimeInMillis());
long oldMillis = c.getTimeInMillis();
Date e = new Date(c.getTimeInMillis());
System.out.println("Date:" + e);
但控制台正在打印 -
Date:2013-01-23
TimeInMillis:1358918100839
我不知道这段代码有什么问题。而不是打印“日期:2012-12-23”,它打印“日期:2013-01-23”。任何人都可以指导我吗?
答案 0 :(得分:1)
而不是传递12尝试传递11 month
。 Bcs,月份从0开始而不是1 (即1月份为0,2月份为1,依此类推)。因此,如果您通过11,则只有date
december
为 2013-12-23 。
试试这个:
Calendar c = Calendar.getInstance();
c.set(2012,11,23,10,45, 0); // Correction here
System.out.println("TimeInMillis:" + c.getTimeInMillis());
long oldMillis = c.getTimeInMillis();
Date e = new Date(c.getTimeInMillis());
System.out.println("Date:" + e);
答案 1 :(得分:1)
月份从1月的0开始到12月的11月,如果你指定12,13,14 ......它将计算下一年的下一个月,
对于实例:如果您将月份指定为14,将年份指定为2012,则不会抛出任何错误“说明,这不是有效月份”,它只会返回明年2月,我们的例子将于2013年2月返回“。
因此您应该将代码编写为
Calendar c = Calendar.getInstance();
c.set(2012,11,23,10,45, 0);
System.out.println("TimeInMillis:" + c.getTimeInMillis());
long oldMillis = c.getTimeInMillis();
Date e = new Date(c.getTimeInMillis());
System.out.println("Date:" + e);
输出
:日期:2012年12月23日星期日10:45:00
如果您将月份的价值定为12,则需要在2013年1月下旬,类似于明年2月需要的14
Calendar c = Calendar.getInstance();
c.set(2012,12,23,10,45, 0);
System.out.println("TimeInMillis:" + c.getTimeInMillis());
long oldMillis = c.getTimeInMillis();
Date e = new Date(c.getTimeInMillis());
System.out.println("Date:" + e);
输出:
日期:1月23日星期三10:45:00 IST 2013
如果您将月份的值指定为13
,则输出日期:2月23日星期六10:45:00 IST 2013