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

标签 java calendar timestamp unix-timestamp

我正在开发一个应用程序,我必须找到每天上午 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;
    }
}

最佳答案

这样的事情怎么样?

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.
}

关于java - 是否有必要在 java 函数中为时间创建两个日历实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20626884/

相关文章:

java - 我们可以查看JVM内存中的对象吗?

java - 在 WAS 上使用 JAAS 的 URLCallback?

ios - 从特定年份的给定月份获取每一天

android - 删除所有本地日历事件有效,但会触发删除太多事件的错误

java - 使用 javafx 创建日历

java - 三重 DES 加密字符串生成 "\n"

java - 项目中可以有未使用的组件吗?

mysql - 将自动生成的日期/时间戳添加到映射的字符串集合( hibernate 注释)

batch-file - 如何在批处理文件结果的开头添加时间戳

voip - 如何计算RTP中的有效时间偏移量