是否需要在java函数中为时间创建两个日历实例?

是否需要在java函数中为时间创建两个日历实例?,java,calendar,timestamp,unix-timestamp,Java,Calendar,Timestamp,Unix Timestamp,我正在开发一个应用程序,其中我必须找到每天上午9点和晚上8点的时间戳,并计算给定的时间戳是否在这些时间戳之间。 下面给出了我的函数,谁能建议我是否需要创建两个日历实例?并且需要帮助来优化这个功能 boolean isDateTimeBetweenNineAMTOEightPM(long datetime) { long nineAM = 0, eightPM = 0; Calendar calendar = Calendar.getInstance(); calend

我正在开发一个应用程序,其中我必须找到每天上午9点和晚上8点的时间戳,并计算给定的时间戳是否在这些时间戳之间。 下面给出了我的函数,谁能建议我是否需要创建两个日历实例?并且需要帮助来优化这个功能

 boolean isDateTimeBetweenNineAMTOEightPM(long datetime) {
    long nineAM = 0, eightPM = 0;

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR, 9);
    calendar.set(Calendar.MINUTE, 00);
    calendar.set(Calendar.SECOND, 00);
    calendar.set(Calendar.AM_PM, Calendar.AM);
    nineAM = calendar.getTime().getTime() / 1000;

    calendar.set(Calendar.HOUR, 8);
    calendar.set(Calendar.MINUTE, 00);
    calendar.set(Calendar.SECOND, 00);
    calendar.set(Calendar.AM_PM, Calendar.PM);
    eightPM = calendar.getTime().getTime() / 1000;

    if (datetime >= nineAM && datetime <= eightPM) {
        return true;
    } else {
        return false;
    }
}
布尔值IsDateTimeBetweenniamToeightPM(长日期时间){
长九线=0,八线=0;
日历=Calendar.getInstance();
日历。设置(日历。小时,9);
calendar.set(calendar.MINUTE,00);
日历.set(calendar.SECOND,00);
日历.set(calendar.AM\u PM,calendar.AM);
nineAM=calendar.getTime().getTime()/1000;
calendar.set(calendar.HOUR,8);
calendar.set(calendar.MINUTE,00);
日历.set(calendar.SECOND,00);
日历.set(calendar.AM\u PM,calendar.PM);
eightPM=calendar.getTime().getTime()/1000;

如果(datetime>=nineAM&&datetime像这样的东西怎么样

boolean isDateTimeBetweenNineAMTOEightPM(
    long datetime) {
  final Calendar calendar = Calendar.getInstance(); // Get one calendar instance.
  calendar.set(Calendar.MINUTE, 0);                 // Set Minutes, Seconds, and Millis to 0.
  calendar.set(Calendar.SECOND, 0);
  calendar.set(Calendar.MILLISECOND, 0);

  calendar.set(Calendar.HOUR, 9);                   // 9 AM
  calendar.set(Calendar.AM_PM, Calendar.AM);
  final long nineAM = calendar.getTimeInMillis();   // In Millis.

  calendar.set(Calendar.HOUR, 8);                   // 8 PM
  calendar.set(Calendar.AM_PM, Calendar.PM);
  return (datetime >= nineAM && datetime <= calendar
      .getTimeInMillis());                         // Return.
}
布尔值IsDateTimeBetweenniamToeightPM(
(长时间){
最终日历=Calendar.getInstance();//获取一个日历实例。
calendar.set(calendar.MINUTE,0);//将分钟、秒和毫秒设置为0。
calendar.set(calendar.SECOND,0);
calendar.set(calendar.毫秒,0);
calendar.set(calendar.HOUR,9);//上午9点
日历.set(calendar.AM\u PM,calendar.AM);
final long nineAM=calendar.getTimeInMillis();//以毫秒为单位。
calendar.set(calendar.HOUR,8);//晚上8点
日历.set(calendar.AM\u PM,calendar.PM);
return(datetime>=nineAM&&datetime我会这样做

    Calendar cal = Calendar.getInstance(); 
    cal.set(Calendar.MINUTE, 0); 
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    cal.set(Calendar.HOUR_OF_DAY, 9);
    if (datetime < cal.getTimeInMillis()) {
        return false;
    }
    cal.set(Calendar.HOUR_OF_DAY, 20); 
    return datetime <= cal.getTimeInMillis();
Calendar cal=Calendar.getInstance();
校准设置(日历分钟,0);
校准设置(日历秒,0);
校准设置(日历毫秒,0);
校准设置(日历小时/天,9);
if(datetimereturn datetime如果您不需要重用它们,那么,不,不需要获得两个实例。只需重用您拥有的一个。您在哪里使用两个实例?为了简单起见,我建议使用一个名为joda time.Google的外部库。它将为您简化代码。您不需要设置/*calendar.set(calendar.MINUTE,00);calendar.set(calendar.SECOND,00);*/再次,因为您已经为此实例进行了设置。因此,这两行也可以删除。从上午9点到晚上8点是11小时。一旦您有了上午9点的毫秒数,您可以检查您的
日期时间
是否在
时间之后
时间
时间+11小时(=39600000毫秒)之前。