java - 如何进行时间比较?
问题描述
我有两个数组
String[] titles = {
"apple",
"cherry",
"coconut",
"banana",
"lemon"}
和
String[] times = {
"04:21 AM",
"12:01 PM",
"03:32 PM",
"06:30 PM",
"08:04 PM"}
而且我现在的时间是
晚上 10:04
现在我的要求:
我想做一个比较下一次最接近当前时间的时间
结果将是:
下一次:苹果(4:21 AM)在(6)小时和(17)分钟之后。
我需要计时器每 1 秒检查一次执行此操作
谁能看到这个话题
解决方案
我专门设计了一个功能来解决您的问题,根据您的需要使用功能。
它肯定对你有用。
/**
*
* @author Niravdas
*/
public class TimeDiff {
String[] titles = { "apple", "cherry", "coconut", "banana", "lemon"};
String[] times = { "04:21 AM", "12:01 PM", "03:32 PM", "06:30 PM", "08:04 PM"};
String findingafter="10:04 AM";
public TimeDiff()
{
int time[]=nextTimeArrayIndex(findingafter,times);
if(time[0]>=0)
System.out.println("NEXT TIME: "+titles[time[0]]+ "("+ times[time[0]] +") after ("+time[1]+") Hour And ("+time[2]+") Minutes.");
else
{
System.out.println("NEXT TIME: "+titles[time[3]]+ "("+ times[time[3]] +") Tommorrow");
}
}
public static void main(String argv[])
{
new TimeDiff();
}
int[] nextTimeArrayIndex(String Finding,String[] fromArray)
{
int shortest=-1,shortestsec=-1;
long minsecdif=(24*60*60+1),minsec=(24*60*60+1);
int hr=Integer.parseInt(Finding.substring(0, 2));
int min=Integer.parseInt(Finding.substring(3, 5));
long seconds = convertToSec(hr, min, 0, Finding.substring(Finding.length()-2));
System.out.println("seconds :" + seconds);
for(int i=0;i<fromArray.length;i++)
{
int temphr=Integer.parseInt(fromArray[i].substring(0, 2));
int tempmin = Integer.parseInt(fromArray[i].substring(3,5));
long tempsec = convertToSec(temphr, tempmin, 0, fromArray[i].substring(Finding.length()-2));
System.out.println("Compared to :" + tempsec);
if((tempsec - seconds) > 0 && minsecdif > (tempsec - seconds))
{
minsecdif = (tempsec - seconds);
shortest = i;
}
if(minsec > tempsec)
{
minsec = tempsec;
shortestsec = i;
}
}
int[] data = {0,0,0,0};
data[0] = shortest;
data[1] = (int) (minsecdif/60)/60;
data[2] = (int) (minsecdif/60)%60;
if(shortest==-1)
{
data[3] = (int)shortestsec;
}
return data;
}
long convertToSec(int hr,int min,int sec,String AMorPM)
{
if(hr==12)
{
hr=0;
}
long secs = (hr*60*60) + (min*60) + (sec);
if(AMorPM.equalsIgnoreCase("PM"))
{
secs += (12*60*60);
}
return secs;
}
}
我希望它有助于解决您的问题。:-)
推荐阅读
- ios - iOS Firebase 检测到事件中的崩溃,但无法识别 Crashlytics 部分中的应用程序
- javascript - 我需要帮助如何处理最大调用堆栈?
- angular - 如何在角度11中合并两个或多个数组
- reactjs - 条件渲染 + React
- api - 在 API AUTOMATION 中打印响应时获取“io.restassured.internal.RestAssuredResponseImpl@268cbb86”
- svelte - 附加到页面的苗条样式 HTML
- python - InvalidArgumentError: unique 需要一维向量
- excel - 如何在 For Each 循环之外创建一个 vbYesNo MsgBox?
- routes - Next.js:如何使带空间的动态路由工作?
- javascript - QuerySnapshot.empty 导致承诺拒绝错误