【问题标题】:How to replace getDate() from the type Date which is deprecated?如何从已弃用的 Date 类型中替换 getDate()?
【发布时间】:2015-09-21 11:30:21
【问题描述】:

我有一个必须纠正的现有程序。它包含以下几行:

        Date startDate = new Date();
        int day = startDate.getDate() - 1;

但是 Date 类型的 getDate() 已被弃用,因此我必须使用 Calender 更改它。我试过这个:

Calendar startDate = Calendar.getInstance();
startDate.add(Calendar.DATE, -1);
int day= startDate.getTime();

但这会导致以下错误:

类型不匹配:无法从 Date 转换为 int

【问题讨论】:

    标签: java date calendar getdate


    【解决方案1】:

    另一个不错的选择是使用 like :

    System.out.println(DateFormat.getDateInstance().format(new Date()));
    

    它将打印当前日期。

    如果你需要时间和日期,那么你可以像这样使用:

    System.out.println(DateFormat.getDateTimeInstance().format(new Date()));
    

    【讨论】:

      【解决方案2】:

      如果您想获得每月的一天,请使用:

      int day= startDate.get(Calendar.DAY_OF_MONTH);
      

      如果您想获得一周中的每一天,请使用:

      int day= startDate.get(Calendar.DAY_OF_WEEK);
      

      还要注意星期几,因为第 0 天是星期日而不是星期一。

      get 和 set 的字段编号,表示星期几。这 字段取值 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、 周五和周六。

      【讨论】:

      • GWT 似乎不支持 Calender 类。编译时出现此错误:“没有可用于 java.util.Calendar 类型的源代码;您是否忘记继承所需的模块?”
      • 我没有注意到您使用 GWT。我不熟悉 GWT,但请查看此回复:stackoverflow.com/questions/7009655/…
      【解决方案3】:

      类型不匹配:无法从 Date 转换为 int

      改变

        int day= startDate.getTime();
      

       Date dat= startDate.getTime();//return type Date
      

      【讨论】:

        【解决方案4】:

        按照 javadocs 的建议,使用 Calendar.get(Calendar.DAY_OF_MONTH)

        【讨论】:

          【解决方案5】:

          获取月份中的日期:

          int day= startDate.get(Calendar.DAY_OF_MONTH);
          

          来自Javadocs

          get 和 set 的字段编号,指示月份中的哪一天。这是 DATE 的同义词。该月的第一天的值为 1。

          【讨论】:

            【解决方案6】:

            getTime() 函数将返回一个不能转换为 int 的日期对象。如果您想将日期作为整数,您必须使用:

            int day = startDate.get(Calendar.DATE)
            

            【讨论】:

              【解决方案7】:

              在 Date#startDate.getDate() 中返回月份中的日期:

              • 代码#1-->

                Date startDate = new Date();
                int day = startDate.getDate() - 1;
                System.out.println(day); 
                

              通过 Calendar#.get(Calendar.DAY_OF_MONTH) 你会得到与 Date#startDate.getDate() 相同的结果:

              • 代码#2-->

                Calendar startDate = Calendar.getInstance();
                int day= startDate.get(Calendar.DAY_OF_MONTH)-1;
                System.out.println(day);
                

              所以你可以用 Code#2 替换 Code#1

              【讨论】:

              • GWT 似乎不支持 Calender 类。
              【解决方案8】:

              请参阅http://docs.oracle.com/javase/7/docs/api/java/util/Date.html#getTime() 上的 java 文档:

              Date 对象的 getTime() 方法返回 long 不在 int 中,所以使用如下:

              long time = startDate.getTime();
              

              对于Calendar 文档http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#getTime() 使用如下:

              long time = startDate.getTime().getTime();
              

              对于月份中的某天:

              Calendar c = Calendar.getInstance();
              int dayOfMonth = c.get(Calendar.DATE);
              

              【讨论】:

                【解决方案9】:

                java.time

                旧的 java.util.Date/.Calendar 类是出了名的麻烦。它们已在 Java 8 中被新的 java.time 框架取代。

                注意时区的使用。确定日期至关重要。如果省略,则隐式依赖 JVM 当前的默认时区。最好指定所需/预期的时区。

                ZoneId zoneId = ZoneId.of( "America/Montreal" );
                ZonedDateTime now = ZonedDateTime.now( zoneId );
                int dayOfMonth = now.getDayOfMonth();
                int dayOfWeek = now.getDayOfWeek().getValue();
                int dayOfYear = now.getDayOfYear();
                

                【讨论】:

                  【解决方案10】:

                  只需键入 int day = startDate.get(Calendar.DAY_OF_WEEK);

                  【讨论】:

                    猜你喜欢
                    • 2020-02-27
                    • 1970-01-01
                    • 2020-06-07
                    • 2016-08-26
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-07-05
                    相关资源
                    最近更新 更多