【问题标题】:Issue in convert calendar object to date android将日历对象转换为日期android的问题
【发布时间】:2015-07-16 04:58:07
【问题描述】:

我想将日历对象转换为日期如下。

int year,month,day;
mCalendarEnd = Calendar.getInstance();
year = mCalendarEnd.get(Calendar.YEAR);
month = mCalendarEnd.get(Calendar.MONTH)+1;
day   = mCalendarEnd.get(Calendar.DAY_OF_MONTH);

现在将其转换为日期对象

Date d1 = new Date(day,month,year);

当我打印日期对象时:

System.out.println("Date : "+d1.getDay()+"/"+d1.getMonth()+"/"+d1.getYear());

它应该打印当前日期,但在上面的代码中它打印了错误的日期。知道如何解决这个问题吗?你的所有建议都是可观的。

【问题讨论】:

  • 为什么要将日历对象转换为日期?因为您已经从日历对象本身获得了 dd-mm-yy 。您尝试使用的方法也已弃用
  • Kinnar Vasa : 因为我需要根据过去的日期对象进行日差

标签: android date calendar


【解决方案1】:

calendar.getTime() 返回 Date 对象。

但如果您只需要今天的日期,new Date() 也将今天的日期作为 Date 对象返回。

日历示例:

Calendar calendar = Calendar.getInstance()
Log.i("My Tag", "calendar getTime -----> " + calendar.getTime());

输出:

My Tag: calendar getTime -----> Wed Dec 05 13:03:43 GMT+03:30 2018

日期示例:

Log.i("My Tag", "new Date -----> " + new Date());

输出:

My Tag: new Date -----> Wed Dec 05 13:05:38 GMT+03:30 2018

如您所见,它们都有相同的输出。

【讨论】:

    【解决方案2】:

    你需要这样做

        //Set calendar
        Calendar calendar = Calendar.getInstance();
        Date date1 = calendar.getTime(); // gives a date object
    
        //To get day difference, Just an example
        calendar.add(Calendar.DAY_OF_MONTH, -7);
        Date date2 = calendar.getTime(); // gives a date object
    
        long differenceInMillis = Date1.getTime() - Date2.getTime();
        long differenceInDays = TimeUnit.DAYS.convert(differenceInMillis, TimeUnit.MILLISECONDS);
    

    或者不需要日期对象

        Calendar calendar = Calendar.getInstance();
        long date1InMillis = calendar.getTimeInMillis();
    
        calendar.add(Calendar.DAY_OF_MONTH, -7);
        long date2InMillis = calendar.getTimeInMillis();
    
        long differenceInMillis = date1InMillis - date2InMillis;
        long differenceInDays = TimeUnit.DAYS.convert(differenceInMillis, TimeUnit.MILLISECONDS);
        calendar.getTimeInMillis()
    

    【讨论】:

      【解决方案3】:

      为什么不只使用日历?

      System.out.println("Date   : " + day + "/" + month + "/" + year);
      

      结果 1/1/1900

      或者你想要其他格式?但不要用 1 增加月份

      System.out.println("Date   : " + day + "/" + new DateFormatSymbols().getMonths()[month] + "/" + year);
      

      结果 1/1/1900

      【讨论】:

        【解决方案4】:

        把它放在你的代码中:

        Date d1 = new Date(year, month, day);
        System.out.println("Date : " + d1.getDate() + "/" +d1.getMonth() + "/" + d1.getYear());
        

        你会得到正确的日期。

        【讨论】:

          【解决方案5】:
          d1=new Date(year, month, day);
          System.out.println("Dt:"+d1.getDate()+"/"+d1.getMonth()+"/"+d1.getYear());
          

          【讨论】:

            猜你喜欢
            • 2011-09-05
            • 2014-05-31
            • 1970-01-01
            • 2012-01-28
            • 2010-09-07
            • 1970-01-01
            • 2012-07-07
            • 1970-01-01
            • 2017-10-02
            相关资源
            最近更新 更多