如何从不推荐使用的Date类型中替换getDate()?

时间:2015-09-21 11:30:22

标签: java date calendar getdate

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

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

日期 getDate()已弃用,因此我必须使用日历进行更改。我试过这个:

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

但这导致以下错误:

  

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

10 个答案:

答案 0 :(得分:5)

如果您想要每月使用此功能:

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

如果你想每周都有这个:

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

一周中的一天也要小心,因为第0天是星期日而不是星期一。

  

获取和设置的字段编号,表示星期几。这个   字段取值SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,   星期五和星期六。

答案 1 :(得分:4)

另一个好的选择是使用:

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

它将打印当前日期。

如果您需要时间和日期,那么您可以使用:

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

答案 2 :(得分:0)

  

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

更改

  int day= startDate.getTime();

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

答案 3 :(得分:0)

正如javadocs建议的那样,使用Calendar.get(Calendar.DAY_OF_MONTH)

答案 4 :(得分:0)

要获得当月的日期:

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

来自Javadocs

  

获取和设置的字段编号,表示该月的某一天。这是   DATE的同义词。该月的第一天的价值为1。

答案 5 :(得分:0)

getTime()函数将返回一个无法转换为int的Date对象。如果你想把这一天作为整数,你必须使用:

int day = startDate.get(Calendar.DATE)

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

在Date#startDate.getDate()中返回月中的某一天:

  • 代码#1 - >

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

通过日历#.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);
    

因此,您可以用代码#2替换代码#1

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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