如何从已弃用的Date类型替换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

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

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

打印当前日期

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

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

如果您想以月为单位获取日期,请使用:

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

如果你想得到星期几,使用这个:

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

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

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

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

改变
  int day= startDate.getTime();

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

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

获取日期:

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

来自Javadocs:

get和set字段号,表示月份的第几天。这是DATE的同义词。每月第一天的值为1。

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

int day = startDate.get(Calendar.DATE)

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

所以你可以用代码#2代替代码#1

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

getTime()方法的Date对象返回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);

java.time

旧的java.util.Date/。日历类是出了名的麻烦。它们已在Java 8和之后的新Java中被取代。时间框架。

注意时区的使用。对确定日期至关重要。如果省略,则隐式地依赖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();

直接输入int day = startDate.get(Calendar.DAY_OF_WEEK);

最新更新