没有得到特定的日期作为回报

时间:2013-12-23 05:50:05

标签: android string performance android-layout

我正在尝试在我的应用程序中使用此代码。

            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”。任何人都可以指导我吗?

2 个答案:

答案 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