Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中比较两次_Android_Time_Toast - Fatal编程技术网

在android中比较两次

在android中比较两次,android,time,toast,Android,Time,Toast,我已尝试使用以下代码进行两次比较: SimpleDateFormat sdf = new SimpleDateFormat("hh:mm"); Date inTime = sdf.parse("11:00"); Date outTime = sdf.parse("10:00"); if(inTime.compareTo(outTime) > 0){ Toast.makeText(this, "Out time should be greater th

我已尝试使用以下代码进行两次比较:

   SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
    Date inTime = sdf.parse("11:00");
    Date outTime = sdf.parse("10:00");

    if(inTime.compareTo(outTime) > 0){
    Toast.makeText(this, "Out time should be greater than In time", Toast.LENGTH_SHORT).show();
    }
以上代码运行良好

但如果我在11:00的时候给出时间,在12:00的时候给出时间,我就得到了更多的祝酒词

如果我把时间从12:00分配到12:59,我会收到上面的祝酒词。在其他情况下,上述代码工作正常


我做错了什么。请帮助我。

更改SimpleDateFormat如下所示

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
以下是模式:

H   Hour in day (0-23)  Number  0
k   Hour in day (1-24)  Number  24
K   Hour in am/pm (0-11)    Number  0
h   Hour in am/pm (1-12)    Number  12

这将起作用。…

如果您使用24小时时间格式,则使用
kk
而不是
HH

 SimpleDateFormat sdf = new SimpleDateFormat("kk:mm");
该类适用于EditText和TextView,如果时间在HH:mm a格式的From time之后,则将时间设置为EditText或TextView;博士 使用java.time

java.time 你有三个问题:

  • 您正在使用可怕的旧日期时间类(
    date
    &
    SimpleDateFormat
    ),这些类在几年前被现代java.time类取代
  • 您的
    hh:mm
    格式应该是24小时制而不是12小时制的大写:
    hh:mm
  • 您试图用一个表示日期的类来表示一天中的某个时间是不恰当的,该类的日期值为一天中的某个时间
使用。此类表示一天中没有日期和时区的时间

LocalTime start = LocalTime.parse( "11:00" ) ;
LocalTime stop = LocalTime.parse( "12:00" ) ;
你可以比较

boolean isStopAfterStart = stop.isAfter( start ) ;
将经过的时间计算为持续时间

Duration d = Duration.between( start , stop ) ;
d、 toString():PT1H

您还可以,作为另一种方法,在开始之前检测停止时间

boolean isStopBeforeStart = d.isNegative() ;
注意事项:在没有日期和时区背景的情况下工作可能会产生不切实际的结果。这种方法忽略了时区中出现的异常情况,例如夏令时(DST)和特定地区的人们使用的其他转换为挂钟时间的情况。一个小时可以重复,也可以跳过。一天可以是23小时、23.5小时、23.75小时、25小时或其他小时数


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*

从哪里获得java.time类

  • 、和更高版本-标准Java API的一部分,带有捆绑实现。
    • Java9添加了一些次要功能和修复
    • 大多数java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类

    • 对于早期Android(将“hh:mm”更改为“hh:mm”后),我得到了期望的结果。非常感谢Sanket.FYI,像
      java.util.date
      java.util.Calendar
      、和
      java.text.simpleDataFormat
      这样麻烦的旧日期时间类现在是遗留的,被这些类所取代。大多数java.time功能在项目中被重新移植到java 6和java 7。Further在项目中适应了早期的Android。请参见.FYI,像
      java.util.date
      java.util.Calendar
      、和
      java.text.SimpleDateFormat
      这样麻烦的旧日期时间类现在是遗留的,被这些类所取代。大多数java.time功能在项目中被重新移植到java 6和java 7。进一步她已经适应了项目中早期的Android。请参阅。
      boolean isStopAfterStart = stop.isAfter( start ) ;
      
      Duration d = Duration.between( start , stop ) ;
      
      boolean isStopBeforeStart = d.isNegative() ;