Java 日历-时间间隔
我有以下Java方法,它根据时间间隔返回字符串。当间隔为6-14小时时,它工作正常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
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、 它使用相同的基本方法。