当我的设备时间介于或等于开始时间和结束时间时,我希望它显示ChogadiaName
。这是我提取时间的方法:
/*{"chogadia":[{"ChogadiaName":1,"StartTime":"5:31:19 AM","EndTime":"7:14:15 AM","Effect":"Inauspicious Chogadia"},{"ChogadiaName":3,"StartTime":"8:57:10 AM","EndTime":"10:40:5 AM","Effect":"Auspicious Chogadia"},{"ChogadiaName":4,"StartTime":"10:40:5 AM","EndTime":"12:22:59 AM","Effect":"Auspicious Chogadia"}]}*/
public class ChogadiaParser {
public static ArrayList<Chogadia> mList=new ArrayList<Chogadia>();
public static Chogadia mChogadia;
public static String response,chogadia;
public static String Lucky="Auspicious Chogadia";
public static String UnLucky="Inauspicious Chogadia";
public static void GroupResult(String url){
try{
JSONArray jArray;
JSONObject jObject;
response=GetJsonObject.sendRequest(url);
if(response == null){
return;
}
jObject=new JSONObject(response);
jArray=jObject.getJSONArray("chogadia");
mList.clear();
for(int i=0;i<jArray.length();i++){
mChogadia=new Chogadia();
jObject=jArray.getJSONObject(i);
mChogadia.SetChogadiaName(jObject.getString("ChogadiaName"));
mChogadia.SetStartTime(jObject.getString("StartTime"));
mChogadia.SetEndTime(jObject.getString("EndTime"));
mChogadia.SetEffect(jObject.getString("Effect"));
mList.add(mChogadia);
if(mathcTime(jObject.getString("StartTime"),jObject.getString("EndTime"))){
System.out.println("Matched Name Is: " + jObject.getString("ChogadiaName"));
break; // break loop
}
}
}catch(Exception e){
e.printStackTrace();
}
}
private static boolean mathcTime(String stime,String eTime) {
SimpleDateFormat ft = new SimpleDateFormat("hh:mm:ss");
try {
Date ct = new Date();
Date st = ft.parse(stime);
Date et=ft.parse(eTime);;
long currentTime = ((ct.getHours()*60)*60) + (ct.getMinutes()*60) + (ct.getSeconds());
long startTime = ((st.getHours()*60)*60) + (st.getMinutes()*60) + (st.getSeconds());
long endTime = ((et.getHours()*60)*60) + (et.getMinutes()*60) + (et.getSeconds());
if(currentTime>=startTime || currentTime<=endTime){
return true;
}else{
return false;
}
} catch (Exception e) {
}
return false;
}
}
答案 0 :(得分:0)
您应该在TimerTask
中使用ServiceThe TimerTask class represents a task to run at a specified time. The task may be run once or repeatedly.
或者你可以使用监视BroadcastReceiver的Intent.ACTION_TIME_TICK。 Android会每分钟发送一次Intent.ACTION_TIME_TICK。然后你可以在接收器中捕获它并做你想要的。
Broadcast Action: The current time has changed. Sent every minute. You can not receive this through components declared in manifests, only by exlicitly registering for it with Context.registerReceiver().
此外,代码中的内容
currentTime>=startTime || currentTime<=endTime
应该是
currentTime>=startTime && currentTime<=endTime
答案 1 :(得分:0)
如果平板电脑时间大于ServerTime(5分钟),此片段将返回true / false
if ((serverDate.getTime() >= tabletDate.getTime() - 300000) &&
(serverDate.getTime() <= tabletDate.getTime() + 300000))
{
isTrue = true;
} else {
isTrue = false;
}