2016-11-17 86 views
-1

我在一个字符串中获得了系统时间,例如“1240”。 然后我想做一些事情,如系统时间是<比1240,然后关闭应用程序。 但它给了我“操作员'<'不能应用于java.lang.String!”错误!运算符'<'不能应用于'java.lang.String'

我的代码是:

  runOnUiThread(new Runnable() { 
      public void run() { 
       try{ 
        TextView txtCurrentTime= (TextView)findViewById(R.id.showtime); 
        Date dt = new Date(); 
        int hours = dt.getHours(); 
        int minutes = dt.getMinutes(); 
        int mynum = 1240; 
        String curTime = hours + "" + minutes; 
        txtCurrentTime.setText(curTime); 
        if(curTime < mynum){ 
         System.exit(0); 
        } 
       }catch (Exception e) {} 
      } 
     }); 

什么问题?

+2

是 “你好”< “世界” 是真的吗?或假? –

+0

运算符'<'不能应用于java.lang.String!这就是问题 –

+2

注意错误测试:运算符'<'不能应用于java.lang.String“,这意味着'<'运算符不能应用于java.lang.String类型的对象 这是Java,而不是clownlanguage。 考虑浏览到https://docs.oracle.com/javase/tutorial/并阅读“学习Java语言” – DwB

回答

1

<没有为字符串和int定义。所以你不能使用它。

当前的时间可以计算如下:

int curTime = 100*hours + minutes; 

那么你可以使用整数<两者之间。

我相信虽然你必须使用更平常的系统毫秒。

+0

不能使用系统毫秒,除非你想自己做时区补偿 – Andreas

0
if(hours * 100 + minutes < mynum){ 
    System.exit(0); 
} 
1

尝试{

SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); 
String str1 = String.valueOf(hours1) + ":" + String.valueOf(minutes1) + ":" + "00"; 
String str2 = String.valueOf(hours2) + ":" + String.valueOf(minutes2) + ":" + "00"; 
Date date1 = formatter.parse(str1); 
Date date2 = formatter.parse(str2); 

if (date1.compareTo(date2)<0) 
    { 
    //  if date2 > date1     
    } 

}catch (ParseException e1){ 
    e1.printStackTrace(); 
} 

formats for dates

检查日期/时间格式,按您的要求从这里

+0

当OP试图比较“1620”<1240“,即小时和分钟,而不是日/月/年吗? – Andreas

+0

创建通过在“H:mm”格式中添加小时和分钟的字符串,然后使用simpledateformat将其解析为日期并进行比较。我提供了Pattern su通过简单日期格式推荐 – Bali

+0

如果针对问题量身定制答案,而不仅仅是一个样板答案,答案就更有用。在这种情况下,这意味着将代码格式设为小时和分钟,而不是日/月/年,因为问题不是日期,而是时间。这个答案甚至是一个糟糕的样板答案,最后是那个愚蠢的“catch”子句,因为倾销堆栈跟踪并继续执行,就好像没有什么不好是一个非常糟糕的例子。 – Andreas

相关问题