【问题标题】:Get overall hours from two time picker从两个时间选择器中获取总小时数
【发布时间】:2015-10-01 02:12:59
【问题描述】:

从两个时间选择器中获取总小时数的最佳方法是什么?我有两个不同的时间选择器,每个时间选择器都有时间和超时。如果两个时间选择器已填充,则下面的编码可以正常工作,但如果只填充一个时间选择器则不起作用。任何建议将不胜感激。

 SimpleDateFormat format = new SimpleDateFormat("HH:mm");
            Date dateb = null; //time in
            Date datec = null; //time out
            Date dateb1 = null; //time in1
            Date datec1 = null; // time out2

 try {
                dateb = format.parse(b);
                datec = format.parse(c);
                long difference = datec.getTime() - dateb.getTime();
                int minutes = (int) ((difference / (1000 * 60)) % 60);
                int hours = (int) ((difference / (1000 * 60 * 60)) % 24) - 1;
                editTextH1.setText((hours + ":" + minutes));
            } catch (Exception e) {

                System.err.println("ouch!");
            }
            try {

                dateb1 = format.parse(d);
                datec1 = format.parse(e1);
                long difference1 = datec1.getTime() - dateb1.getTime();
                int minutes1 = (int) ((difference1 / (1000 * 60)) % 60);
                int hours1 = (int) ((difference1 / (1000 * 60 * 60)) % 24) - 1;
                editTextH2.setText((hours1 + ":" + minutes1));
            } catch (Exception e) {

                System.err.println("ouch!");
            }

 try {

                long dateb_sum = dateb.getTime() + dateb1.getTime();
                long datec_sum = datec.getTime() + datec1.getTime();
                long difference4 = datec_sum - dateb_sum;
                int minutes4 = (int) ((difference4 / (1000 * 60)) % 60);
                int hours4 = (int) ((difference4 / (1000 * 60 * 60)) % 24) - 1;
                editText8.setText((hours4 + ":" + minutes4));
            }catch(Exception e)
            {
                System.err.println("ouch!");
            }

editText8 将汇总来自 editTextH1 和 editTextH2 的总数...如果这两个时间选择器被填充,一切正常。但是现在我想设置 editText8 即使填充了一次选择器也会获得该值(只有一次选择器被填充时 editText8==editTextH1 的值)...请帮助..我一直在这里停留更多超过两天...

【问题讨论】:

  • 这里的代码到底有什么问题?如果只填充一次选择器,您会期望发生什么?
  • @SteveClanton 如果只填充一个时间选择器,editText 将仅从时间选择器(时间进入和超时)获取总小时数,这意味着该值应与 editTextH1... 相同。如果是两个,那么它将从两个时间选择器中获得,
  • @SteveClanton 你明白我的意思吗?
  • 是的。你是说editTextH1、editTextH2、editText8都填的时候都设置正确了吗?你是说当它只有一个时没有,或者问题只是没有设置editText8但editTextH1(或2)是?你提出的问题越清楚,你得到答案的可能性就越大。您是否已在调试器中单步执行?是否有一些事情没有按照您的预期做?
  • 应该是这样..editText8 将汇总editTextH1 和editTextH2 的总数...如果这两个时间选择器被填充,一切正常。但是现在我想设置即使一次选择器被填充,editText8 也会获得该值(只有一次选择器被填充时,editText8==editTextH1 的值)

标签: java android try-catch timepicker


【解决方案1】:

如果您将变量以保持差异放入外部范围,则无需尝试让它们添加它们。

SimpleDateFormat format = new SimpleDateFormat("HH:mm");
long difference = 0;
long difference1 = 0;
try {
    Date dateb = format.parse(b); //time in
    Date datec = format.parse(c); //time out
    difference = datec.getTime() - dateb.getTime();
    int minutes = (int) ((difference / (1000 * 60)) % 60);
    int hours = (int) ((difference / (1000 * 60 * 60)) % 24) - 1;
    editTextH1.setText((hours + ":" + minutes));
} catch (Exception e) {
     System.err.println("ouch!");
}
try {
    Date dateb1 = format.parse(d);
    Date datec1 = format.parse(e1);
    long difference1 = datec1.getTime() - dateb1.getTime();
    int minutes1 = (int) ((difference1 / (1000 * 60)) % 60);
    int hours1 = (int) ((difference1 / (1000 * 60 * 60)) % 24) - 1;
    editTextH2.setText((hours1 + ":" + minutes1));
 } catch (Exception e) {
    System.err.println("ouch!");
 }
long difference4 = difference + difference1;
int minutes4 = (int) ((difference4 / (1000 * 60)) % 60);
int hours4 = (int) ((difference4 / (1000 * 60 * 60)) % 24) - 1;
editText8.setText((hours4 + ":" + minutes4));

我也会使用 TimeUnit.MILLISECONDS.toMinutes(difference)TimeUnit.MILLISECONDS.toHours(difference),就像在 How to find the duration of difference between two dates in java? 中所做的那样

【讨论】:

  • 接受答案并点赞是在 stackoverflow 上表示感谢的最佳方式。很高兴它有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-17
相关资源
最近更新 更多