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