62,614
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char time[6][6] = {{"02:16"},
{"06:22"},
{"14:54"},
{"13:35"},
{"23:19"},
{"00:20"}};
char input[6];
printf("Please input a time!\n");
scanf("%s" , input);
int hour = atoi(strtok(input,":"));
int minute = atoi(strtok(NULL,":"));
printf("hour = %d\n",hour);
if(hour >24 ||hour <0 || minute <0 || minute>60)
{
printf("The time you input is invalid!\n");
return 0;
}
int T=(hour == 0) ? 60*(hour+24)+minute : 60*hour+minute; //对输入为00:XX特殊情况的处理
printf("T = %d\n",T);
int i,j,t_hour,t_minute;
j=0; //如果最接近的时间为time[0],则需要对j赋0。
int temp=60*(atoi(strtok(time[0],":")))+atoi(strtok(NULL,":")) - T;
if(temp<0)
temp = -temp ;
for(i=1;i<6;i++)
{
char buf[6] ;
strcpy(buf,time[i]);
t_hour = atoi(strtok(buf,":"));
t_minute = atoi(strtok(NULL,":"));
int num;
printf("%d. t_hour = %d\n",i,t_hour);
if(t_hour == 0) //对time[6][6]中时为0特殊情况的处理
num = 60*(24+t_hour) + t_minute - T;
else
num = 60*t_hour + t_minute - T;
if(num<0)
num = -num;
if(num<temp)
{
temp = num;
j=i;
}
}
printf("The nearest time is %s\n" , time[j] );
return 0;
}
public static void main(String[] args) throws ParseException, IOException {
String time = "12:28";
String[] times = {"01:16","06:22","14:54","13:35","12:19","12:20"};
DateFormat date = new SimpleDateFormat("mm:ss");
long timel = date.parse(time).getTime();
long[] timesl = new long[times.length + 1];
for (int i = 0; i < timesl.length-1; i++)timesl[i] = date.parse(times[i]).getTime();
timesl[times.length] = timel;
Arrays.sort(timesl);
long min=0,max=0;
for (int i = 0; i < timesl.length; i++)
if(timesl[i] == timel){
if(i != 1)max = timesl[i-1];
if(i != timesl.length-2)min = timesl[i+1];
}
if((max-timel)<=(timel-min))
System.out.println("这个时间是: " + date.format(new Date(min)));
else
System.out.println("这个时间是: " + date.format(new Date(max)));
}
package com.zf.target;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
public class Test5 {
public static List<String> getNear(String target , String... dates){
long targetTime = formatStringToTime(target);
long[] shortTime = new long[dates.length]; //时间差
Map<Long , List<String>> map = new HashMap<Long , List<String>>(); //保存时间差对应的时间
for (int i = 0; i < dates.length; i++) {
long time = formatStringToTime(dates[i]);
shortTime[i] = Math.abs(targetTime - time); //取时间差的绝对值
if(map.containsKey(shortTime[i])) //如果该时间差已经存在
map.get(shortTime[i]).add(dates[i]);
else{
List<String> list = new Vector<String>();
list.add(dates[i]);
map.put(shortTime[i], list);
}
}
Arrays.sort(shortTime); //排序
return map.get(shortTime[0]); //取最小值
}
public static long formatStringToTime(String str){
String[] arr = str.replaceAll("(\\d+):(\\d+)", "$1,$2").split(",");
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(arr[0]));
c.set(Calendar.MINUTE, Integer.parseInt(arr[1]));
c.set(Calendar.SECOND, 0);
return c.getTimeInMillis();
}
public static void main(String[] args) {;
System.out.println(Arrays.toString((getNear("15:02" , new String[]{"01:16"
, "06:22" , "14:54" , "13:35" , "12:19" , "12:20"
, "15:01" , "15:03"
})).toArray()));
}
}
package com.zf.target;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
public class Test5 {
public static String getNear(String target , String... dates){
long targetTime = formatStringToTime(target);
long[] shortTime = new long[dates.length]; //时间差
Map<Long , String> map = new HashMap<Long , String>(); //保存时间差对应的时间
for (int i = 0; i < dates.length; i++) {
long time = formatStringToTime(dates[i]);
shortTime[i] = Math.abs(targetTime - time); //取时间差的绝对值
map.put(shortTime[i], dates[i]);
}
Arrays.sort(shortTime); //排序
return map.get(shortTime[0]); //取最小值
}
public static long formatStringToTime(String str){
String[] arr = str.replaceAll("(\\d+):(\\d+)", "$1,$2").split(",");
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(arr[0]));
c.set(Calendar.MINUTE, Integer.parseInt(arr[1]));
c.set(Calendar.SECOND, 0);
return c.getTimeInMillis();
}
public static void main(String[] args) {;
System.out.println(getNear("12:03" , new String[]{"01:16"
, "06:22" , "14:54" , "13:35" , "12:19" , "12:20"
, "15:01" , "15:03"
}));
}
}