首页 > 解决方案 > 如何进行时间比较?

问题描述

我有两个数组

    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 秒检查一次执行此操作

谁能看到这个话题

如何接近当前时间 [Android Studio]

标签: javaandroid

解决方案


我专门设计了一个功能来解决您的问题,根据您的需要使用功能。

它肯定对你有用。

/**
 *
 * @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;

    }     

}

我希望它有助于解决您的问题。:-)


推荐阅读