Java 日历-时间间隔

Java 日历-时间间隔,java,Java,我有以下Java方法,它根据时间间隔返回字符串。当间隔为6-14小时时,它工作正常 private String shiftCount() { Calendar time = Calendar.getInstance(); if ((time.get(Calendar.HOUR_OF_DAY) >= 0) && (time.get(Calendar.HOUR_OF_DAY) < 6)) return "-S1"; if ((time.get(Calen

我有以下Java方法,它根据时间间隔返回字符串。当间隔为6-14小时时,它工作正常

private String shiftCount()
{
  Calendar time = Calendar.getInstance();
  if ((time.get(Calendar.HOUR_OF_DAY) >=  0) && (time.get(Calendar.HOUR_OF_DAY) <  6)) return "-S1";
  if ((time.get(Calendar.HOUR_OF_DAY) >=  6) && (time.get(Calendar.HOUR_OF_DAY) < 14)) return "-S2";
  if ((time.get(Calendar.HOUR_OF_DAY) >= 14) && (time.get(Calendar.HOUR_OF_DAY) < 22)) return "-S3";
  if ((time.get(Calendar.HOUR_OF_DAY) >= 22) && (time.get(Calendar.HOUR_OF_DAY) < 24)) return "-S1";   
  return null;
}
private String shiftCount()
{
日历时间=Calendar.getInstance();
如果((time.get(日历小时数)>=0)和(&(time.get(日历小时数)<6))返回“-S1”;
如果((time.get(日历小时数)>=6)和(&(time.get(日历小时数)<14))返回“-S2”;
如果((time.get(日历小时数)>=14)和(&(time.get(日历小时数)<22))返回“-S3”;
如果((time.get(日历小时数)>=22)和(&(time.get(日历小时数)<24))返回“-S1”;
返回null;
}

但是如果我需要例如6:10-14:10的时间间隔怎么办?

您还必须检查
分钟
字段


有了joda time,这将不会太冗长。

您还必须检查
分钟
字段


对于joda time,这将不那么冗长。

当每个区域相互接触时,您不需要间隔

private String shiftCount() {
  Calendar time = Calendar.getInstance();
  // the hours is always >= 0
  if (time.get(Calendar.HOUR_OF_DAY) <  6) return "-S1";
  if (time.get(Calendar.HOUR_OF_DAY) < 14) return "-S2";
  if (time.get(Calendar.HOUR_OF_DAY) < 22) return "-S3";
  // the hour is always < 24.
  return "-S1";   
}
private String shiftCount(){
日历时间=Calendar.getInstance();
//小时数始终大于等于0
if(time.get(日历小时)<6)返回“-S1”;
if(time.get(日历小时数)<14)返回“-S2”;
if(time.get(日历小时)<22)返回“-S3”;
//时间总是<24小时。
返回“-S1”;
}
或者你可以使用一个长的一天的时间,它允许你使用小时/分钟等的任意组合

long now = System.currentTimeMillis();
// time of the day in minutes.
long time = ((now + TimeZone.getDefault().getOffset(now)) % 86400000) / 60000;
if (time <  6*60 + 10) return "-S1";
if (time < 14*60 + 10) return "-S2";
if (time < 22*60) return "-S3";
return "-S1";
long now=System.currentTimeMillis();
//一天中的时间(分钟)。
长时间=((现在+时区.getDefault().getOffset(现在))%86400000)/60000;
如果(时间<6*60+10)返回“-S1”;
如果(时间<14*60+10)返回“-S2”;
如果(时间<22*60)返回“-S3”;
返回“-S1”;

当每个区域相互接触时,不需要间隔

private String shiftCount() {
  Calendar time = Calendar.getInstance();
  // the hours is always >= 0
  if (time.get(Calendar.HOUR_OF_DAY) <  6) return "-S1";
  if (time.get(Calendar.HOUR_OF_DAY) < 14) return "-S2";
  if (time.get(Calendar.HOUR_OF_DAY) < 22) return "-S3";
  // the hour is always < 24.
  return "-S1";   
}
private String shiftCount(){
日历时间=Calendar.getInstance();
//小时数始终大于等于0
if(time.get(日历小时)<6)返回“-S1”;
if(time.get(日历小时数)<14)返回“-S2”;
if(time.get(日历小时)<22)返回“-S3”;
//时间总是<24小时。
返回“-S1”;
}
或者你可以使用一个长的一天的时间,它允许你使用小时/分钟等的任意组合

long now = System.currentTimeMillis();
// time of the day in minutes.
long time = ((now + TimeZone.getDefault().getOffset(now)) % 86400000) / 60000;
if (time <  6*60 + 10) return "-S1";
if (time < 14*60 + 10) return "-S2";
if (time < 22*60) return "-S3";
return "-S1";
long now=System.currentTimeMillis();
//一天中的时间(分钟)。
长时间=((现在+时区.getDefault().getOffset(现在))%86400000)/60000;
如果(时间<6*60+10)返回“-S1”;
如果(时间<14*60+10)返回“-S2”;
如果(时间<22*60)返回“-S3”;
返回“-S1”;

您必须检查小时和分钟。谢谢,我忘了写“使用一些集成功能”或“简单解决方案”;我在寻找类似iSinterval(开始,结束):)的东西,你必须检查小时和分钟。谢谢你,我忘了写“使用一些集成功能”或“简单解决方案”;我一直在寻找类似isInInterval(开始,结束):)谢谢,这就足够了,我只需要知道是否存在针对此类问题的函数,类似isInInterval(开始,结束):]joda time有
新间隔(开始,结束)
谢谢,这就足够了,我只需要知道是否存在针对此类问题的函数,类似于isInInterval(开始,结束):]joda time具有
新的间隔(开始,结束)
上述第二个选项将在DST更改时失败days@JodaStephen,第二个示例处理夏令时更改的方式与第一个示例大致相同。i、 它使用相同的基础方法。上述第二个选项将在DST更改时失败days@JodaStephen,第二个示例处理夏令时更改的方式与第一个示例大致相同。i、 它使用相同的基本方法。