Java 减去两次后,TextView上没有显示任何内容(hh:mm:ss)

Java 减去两次后,TextView上没有显示任何内容(hh:mm:ss),java,android,string,jsoup,Java,Android,String,Jsoup,我正在开发一个Android应用程序。我正在为TextView设置两个日期的差异。它没有显示任何内容。在某些地方,它无法访问TextView。如果你能告诉我哪里出了问题,我会很高兴的。我的代码如下。现在,在输入新代码后,它将强制关闭。用新代码更新代码 TestStation.java public class TestStation extends Activity { String URL = "http://lapi.transitchicago.com/api/1.0/ttarrivals

我正在开发一个Android应用程序。我正在为
TextView
设置两个日期的差异。它没有显示任何内容。在某些地方,它无法访问
TextView
。如果你能告诉我哪里出了问题,我会很高兴的。我的代码如下。现在,在输入新代码后,它将强制关闭。用新代码更新代码

TestStation.java

public class TestStation extends Activity {
String URL = "http://lapi.transitchicago.com/api/1.0/ttarrivals.aspx?key=201412abc85d49b2b83f907f9e329eaa&mapid=40380";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.test_station);
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy); 



Document doc = null;

TextView tv = (TextView) findViewById(R.id.tv);

try {
    doc = Jsoup.connect(URL).userAgent("Mozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10").get();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Elements elem = doc.select("eta");
for (Element div : elem) {

}Elements elemn = doc.select("eta"); for (Element div : elem) {
Elements arrT = div.select("arrT");
Elements prdt = div.select("prdt");

String value = arrT.val(); 
String valu = prdt.val();

Date date1 = new Date(valu);
Date date2 = new Date(value);

long dateDiff = (date1.getTime() - date2.getTime())>0 ? (date1.getTime() - date2.getTime()) :(date2.getTime() - date1.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:00");
sdf.format(dateDiff);
tv.setText(String.valueOf (dateDiff));

}

}
LogCat显示大量红色(错误):

09-22 12:39:38.348:E/AndroidRuntime(9713):java.lang.RuntimeException:无法启动活动组件信息{com.dev.chicagotraintracker/com.dev.chicagotraintracker.TestStation}:java.lang.IllegalArgumentException:解析错误:
09-22 12:39:38.348:E/AndroidRuntime(9713):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
09-22 12:39:38.348:E/AndroidRuntime(9713):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
09-22 12:39:38.348:E/AndroidRuntime(9713):在android.app.ActivityThread.access$600(ActivityThread.java:141)
09-22 12:39:38.348:E/AndroidRuntime(9713):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
09-22 12:39:38.348:E/AndroidRuntime(9713):在android.os.Handler.dispatchMessage(Handler.java:99)上
09-22 12:39:38.348:E/AndroidRuntime(9713):在android.os.Looper.loop(Looper.java:137)
09-22 12:39:38.348:E/AndroidRuntime(9713):位于android.app.ActivityThread.main(ActivityThread.java:5103)
09-22 12:39:38.348:E/AndroidRuntime(9713):位于java.lang.reflect.Method.Invokenactive(本机方法)
09-22 12:39:38.348:E/AndroidRuntime(9713):位于java.lang.reflect.Method.invoke(Method.java:525)
09-22 12:39:38.348:E/AndroidRuntime(9713):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-22 12:39:38.348:E/AndroidRuntime(9713):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
9-22 12:39:38.348:E/AndroidRuntime(9713):在dalvik.system.NativeStart.main(本机方法)
09-22 12:39:38.348:E/AndroidRuntime(9713):由以下原因引起:java.lang.IllegalArgumentException:解析错误:
09-22 12:39:38.348:E/AndroidRuntime(9713):at java.util.Date.parseError(Date.java:367)
09-22 12:39:38.348:E/AndroidRuntime(9713):位于java.util.Date.parse(Date.java:563)
09-22 12:39:38.348:E/AndroidRuntime(9713):在java.util.Date.(Date.java:156)
09-22 12:39:38.348:E/AndroidRuntime(9713):位于com.dev.chicagotraintracker.TestStation.onCreate(TestStation.java:53)
09-22 12:39:38.348:E/AndroidRuntime(9713):在android.app.Activity.performCreate(Activity.java:5133)上
09-22 12:39:38.348:E/AndroidRuntime(9713):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)上
09-22 12:39:38.348:E/AndroidRuntime(9713):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)

如何解决此问题?

问题不在于TextView

主要问题是日期解析

您没有捕获第一个引发异常的解析,该异常可能不是要捕获的正确格式 同时检查vlau

     try{
        Date date = sdf.parse(value);
        try
        {
            Date dat = sdf.parse(valu);
            long diff = dat.getTime() - date.getTime();
            tv.setText(String.valueOf(diff));
        }
        catch(ParseException f)
        {
            f.printStackTrace();
        }
        finally
        {}
    }
    catch(ParseException f)
    {
        f.printStackTrace();
    }
    finally
    {}
编辑1:

你可以通过这种方式得到日期差

Date date1 = new SimpleDateFormat("GiveYourFormate", Locale.ENGLISH).parse(stringDate1);
Date date2 = new SimpleDateFormat("GiveYourFormate", Locale.ENGLISH).parse(stringDate2);
long dateDiff = (date1.getTime() - date2.getTime())>0 ? (date1.getTime() - date2.getTime()) :(date2.getTime() - date1.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:00");
sdf.format(dateDiff);

您正在ui线程上执行与网络相关的操作。使用异步任务。你也可以有一个try块和多个catch块。你有什么例外吗?这是一个xml,你发布的链接。为什么不使用xml拉解析器从标记中提取数据呢。在浏览器中打开链接并自己检查<代码>20130921:12:30 20130921:18:30xmltags@Raghunandan,需要从xml中获取更多信息,而不是全部在代码中。Logcat确实显示了橙色,我在上面发布了它。您提供的链接提供的不是html,而是xml,所以使用xmlpullparser解析xml标记。例如,检查文档你是对的。我试图只解析229013 10:53:22的时间部分。我只想要10:53:22,但我有整根弦。我怎样才能只解析那个部分@高科技KitKat Android如果你想要时间,你用某个日期减去它,那么这不是问题,因为日期部分canceled@hichris123选中编辑1您可以通过这种方式编辑日期difference@High-Tech KitKat Android,更新代码后出现新错误,上面更新了logcat和代码。现在是20130922 11:48:56,但我只想要hh:mm:ss。我需要做yyyymmdd hh:mm:ss吗?
Date date1 = new SimpleDateFormat("GiveYourFormate", Locale.ENGLISH).parse(stringDate1);
Date date2 = new SimpleDateFormat("GiveYourFormate", Locale.ENGLISH).parse(stringDate2);
long dateDiff = (date1.getTime() - date2.getTime())>0 ? (date1.getTime() - date2.getTime()) :(date2.getTime() - date1.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:00");
sdf.format(dateDiff);