Java Android比较字符串格式的时间

Java Android比较字符串格式的时间,java,android,date,time,compare,Java,Android,Date,Time,Compare,我有一个字符串,其中包含以下格式的时间: "hh:mm tt" 例如,您可以将当前时间表示为“7:04 PM” 如何将此时间与用户时区中的当前时间进行比较,以查看此时间是否小于、等于或大于当前时间?您可以将字符串转换为日期 String pattern = "<yourPattern>"; SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); try { Date one = dateFormat.parse(&

我有一个字符串,其中包含以下格式的时间:

"hh:mm tt"
例如,您可以将当前时间表示为“7:04 PM”


如何将此时间与用户时区中的当前时间进行比较,以查看此时间是否小于、等于或大于当前时间?

您可以将
字符串
转换为
日期

String pattern = "<yourPattern>";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
try {
 Date one = dateFormat.parse(<yourDate>);
 Date two = dateFormat.parse(<yourDate>);

}
catch (ParseException e) {}
字符串模式=”;
SimpleDataFormat dateFormat=新的SimpleDataFormat(模式);
试一试{
dateone=dateFormat.parse();
Date二=dateFormat.parse();
}
捕获(异常解析){}
它实现了可比较的接口,所以您应该能够将它们与
compareTo()


编辑:
我忘了,但你知道,但只能肯定compareTo返回-1、1或0,所以
1。compareTo(2)
返回-1,当第一个在第二个之前时,等等。

你可以将
字符串
转换为
日期

String pattern = "<yourPattern>";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
try {
 Date one = dateFormat.parse(<yourDate>);
 Date two = dateFormat.parse(<yourDate>);

}
catch (ParseException e) {}
字符串模式=”;
SimpleDataFormat dateFormat=新的SimpleDataFormat(模式);
试一试{
dateone=dateFormat.parse();
Date二=dateFormat.parse();
}
捕获(异常解析){}
它实现了可比较的接口,所以您应该能够将它们与
compareTo()


编辑:
我忘了,但你知道,但只能确定compareTo返回-1、1或0,所以
1。compareTo(2)
返回-1,当第一个在第二个之前,等等。

下面的代码详细说明了@Sajmon的答案

public static void main(String[] args) throws ParseException {
    String currentTimeStr = "7:04 PM";

    Date userDate = new Date();
    String userDateWithoutTime = new SimpleDateFormat("yyyyMMdd").format(userDate);

    String currentDateStr = userDateWithoutTime + " " + currentTimeStr;
    Date currentDate = new SimpleDateFormat("yyyyMMdd h:mm a").parse(currentDateStr);

    if (userDate.compareTo(currentDate) >= 0) {
        System.out.println(userDate + " is greater than or equal to " + currentDate);
    } else {
        System.out.println(userDate + " is less than " + currentDate);
    }
}

下面的代码详细说明了@Sajmon的答案

public static void main(String[] args) throws ParseException {
    String currentTimeStr = "7:04 PM";

    Date userDate = new Date();
    String userDateWithoutTime = new SimpleDateFormat("yyyyMMdd").format(userDate);

    String currentDateStr = userDateWithoutTime + " " + currentTimeStr;
    Date currentDate = new SimpleDateFormat("yyyyMMdd h:mm a").parse(currentDateStr);

    if (userDate.compareTo(currentDate) >= 0) {
        System.out.println(userDate + " is greater than or equal to " + currentDate);
    } else {
        System.out.println(userDate + " is less than " + currentDate);
    }
}

我需要这是尽可能有效的,因为它将在一个服务中执行。如果你只有晚上7:04,而没有偏移,你希望如何将它与用户本地时区的偏移时间进行比较?或者你的时间是基于一个特定的偏移量吗?它们是基于一个特定的偏移量。就我个人而言,我会把时间转换成24小时的格式,直接以小时/分/秒等(你需要的粒度)进行计算,然后将偏移量应用到结果中。所以你建议这样做,而不是创建日历()或日期()对象?我需要它尽可能高效,因为它将在服务中执行。如果您只有晚上7:04,而没有偏移,您希望如何将其与用户本地时区中的偏移时间进行比较?或者你的时间是基于一个特定的偏移量吗?它们是基于一个特定的偏移量。就我个人而言,我会把时间转换成24小时的格式,直接以小时/分/秒等(你需要的粒度)进行计算,然后将偏移量应用到结果中。所以你建议这样做,而不是创建日历()或日期()对象?Eclipse说必须用try-catch块包围SimpleDataFormat.parse()。是的,这是真的。在上面的代码中,
main
方法抛出一个
ParseException
。在您的代码中,就像@Sajmon的回答一样,我希望您将用try-catch块包围
parse
。Eclipse说您必须用try-catch块包围SimpleDataFormat.parse()。是的,这是真的。在上面的代码中,
main
方法抛出一个
ParseException
。在您的代码中,就像@Sajmon的回答一样,我希望您将使用try-catch块围绕
parse