【问题标题】:Not getting the particular date in return没有得到特定日期作为回报
【发布时间】:2013-12-23 05:50:05
【问题描述】:

我正在尝试将此代码放入我的应用程序中。

            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 开始。例如,0 表示一月 (javadoc)

标签: android string performance android-layout


【解决方案1】:

不要传递 12,而是尝试传递 11 来获取 month。 Bcs,月份将从 0 开始,而不是从 1(即 1 表示 0,2 月表示 1,依此类推)。因此,如果您通过了 11,那么只有您将获得 date for 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);

【讨论】:

  • @Andru 希望您在发布这样的评论之前,通过代码上方三行的小段落,其中包含有关更正的足够解释!
  • 当你添加这些行时,你比我更清楚。这个网站不仅仅是关于声誉的。我认为您应该解释为什么要进行更正。对于新来的人来说,他为什么要做这样的改变(第 12 到 11 个月)会很困难。
  • @Andru 即使是新手也会通过这三行解释得到一个更好的主意,即为什么应该将其从 12 更改为 11。如果有人开始编码,即使我们给出一个简短的想法为什么以及为什么他能够继续进行这种改变:(
  • @Andru 不知道你为什么对这个如此挑剔。但是这个答案的修订历史似乎从最初的帖子本身就有了正确的答案。 stackoverflow.com/posts/20737694/revisions
【解决方案2】:

月份从一月的 0 到十二月的 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 IST

如果您将月份的值设为 12 ,则需要 Next January 2013 ,类似地 14 将需要明年 February

            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);

输出:

日期:2013 年 1 月 23 日星期三 10:45:00 IST

如果您将月份的值指定为 13,则输出

日期:2013 年 2 月 23 日星期六 10:45:00 IST

【讨论】:

  • 感谢大家发表宝贵的帮助。
  • @user3106046:如果对您有帮助,请接受此答案,以便其他人在搜索此问题时能够知道这是正确的答案,这使他们尝试这个,谢谢
  • 是的,这对我很有帮助。 Sankar的回答很好。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
相关资源
最近更新 更多