我有一个现有的程序,我必须纠正。它包含以下几行:
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);