如何替换已弃用的方法 Date.setHours(int)?
How do I replace the deprecated method Date.setHours(int)?
我的 Java 代码中有一些已弃用的 Date
方法,如果有人可以在这里指导我,我将不胜感激。我有一个私人日期变量:
private Date startime;
private Date endTime;
并且在我的方法中我已经声明:
Calendar calender = Calendar.getInstance();
this.startTime = calender.getTime();
this.startTime.setHours(0); // ----> is depreacted
this.endTime.setHours(startTime.getHours()); // -->deprecated line as well
setMinutes()
和 getMinutes()
等其他方法也已弃用。
我知道我必须使用 Calendar.set(Calendar.HOUR_OF_DAY, hour)
。怎么才能在这里使用新代码呢?所有的 setHours、getMinutes 等都被划线了。
if (query.getCount() > 0 && query.moveToFirst()) {
Calendar calender = Calendar.getInstance();
this.startTime = calender.getTime();
this.startTime.setHours(0);
this.startTime.setMinutes(query.getInt("startTimeOfDayMins"));
this.daysOfWeek = (query.getString("daysOfWeek")).toLowerCase();
this.endTime = calender.getTime();
this.endTime.setHours(startTime.getHours());
this.endTime.setMinutes(startTime.getMinutes() + query.getInt("durationMins"));
this.context = null;
}
日期的 setHours 方法已弃用。
您可以在此处查看文档:http://docs.oracle.com/javase/7/docs/api/java/util/Date.html
如果您查看设置时间的方法,您会看到:
"As of JDK version 1.1, replaced by Calendar.set(Calendar.HOUR_OF_DAY, int hours)."
您可以使用 Apache Commons Lang3 DateUtils setHours(Date date, int hours)
如果我正确理解你的问题,这应该有效:
int hours = 0;
Calendar calendar = Calendar.getInstance();
calendar.set( Calendar.HOUR_OF_DAY, hours );
this.startTime = calendar.getTime();
this.endTime = calendar.getTime();
如果没有,您能否向我们展示您想要替换日期代码的完整方法?
编辑:这是完整方法的更新版本。基本上它的工作原理是,一旦您获得 Calendar 对象的实例,它就会保持其状态。由于您不打算更改时间,因此只需设置一次。由于您正在更新查询的分钟数,因此您必须在调用 calendar.getTime() 之前再次设置它。
if (query.getCount() > 0 && query.moveToFirst())
{
int hours = 0;
int minutes = query.getInt( "startTimeOfDayMins" );
Calendar calendar = Calendar.getInstance();
calendar.set( Calendar.HOUR, hours );
calendar.set( Calendar.MINUTE, minutes );
this.startTime = calendar.getTime();
this.daysOfWeek = ( query.getString( "daysOfWeek" ) ).toLowerCase();
calendar.set( Calendar.MINUTE, minutes + query.getInt( "durationMins" ) );
this.endTime = calendar.getTime();
this.context = null;
}
我的 Java 代码中有一些已弃用的 Date
方法,如果有人可以在这里指导我,我将不胜感激。我有一个私人日期变量:
private Date startime;
private Date endTime;
并且在我的方法中我已经声明:
Calendar calender = Calendar.getInstance();
this.startTime = calender.getTime();
this.startTime.setHours(0); // ----> is depreacted
this.endTime.setHours(startTime.getHours()); // -->deprecated line as well
setMinutes()
和 getMinutes()
等其他方法也已弃用。
我知道我必须使用 Calendar.set(Calendar.HOUR_OF_DAY, hour)
。怎么才能在这里使用新代码呢?所有的 setHours、getMinutes 等都被划线了。
if (query.getCount() > 0 && query.moveToFirst()) {
Calendar calender = Calendar.getInstance();
this.startTime = calender.getTime();
this.startTime.setHours(0);
this.startTime.setMinutes(query.getInt("startTimeOfDayMins"));
this.daysOfWeek = (query.getString("daysOfWeek")).toLowerCase();
this.endTime = calender.getTime();
this.endTime.setHours(startTime.getHours());
this.endTime.setMinutes(startTime.getMinutes() + query.getInt("durationMins"));
this.context = null;
}
日期的 setHours 方法已弃用。
您可以在此处查看文档:http://docs.oracle.com/javase/7/docs/api/java/util/Date.html
如果您查看设置时间的方法,您会看到:
"As of JDK version 1.1, replaced by Calendar.set(Calendar.HOUR_OF_DAY, int hours)."
您可以使用 Apache Commons Lang3 DateUtils setHours(Date date, int hours)
如果我正确理解你的问题,这应该有效:
int hours = 0;
Calendar calendar = Calendar.getInstance();
calendar.set( Calendar.HOUR_OF_DAY, hours );
this.startTime = calendar.getTime();
this.endTime = calendar.getTime();
如果没有,您能否向我们展示您想要替换日期代码的完整方法?
编辑:这是完整方法的更新版本。基本上它的工作原理是,一旦您获得 Calendar 对象的实例,它就会保持其状态。由于您不打算更改时间,因此只需设置一次。由于您正在更新查询的分钟数,因此您必须在调用 calendar.getTime() 之前再次设置它。
if (query.getCount() > 0 && query.moveToFirst())
{
int hours = 0;
int minutes = query.getInt( "startTimeOfDayMins" );
Calendar calendar = Calendar.getInstance();
calendar.set( Calendar.HOUR, hours );
calendar.set( Calendar.MINUTE, minutes );
this.startTime = calendar.getTime();
this.daysOfWeek = ( query.getString( "daysOfWeek" ) ).toLowerCase();
calendar.set( Calendar.MINUTE, minutes + query.getInt( "durationMins" ) );
this.endTime = calendar.getTime();
this.context = null;
}