【问题标题】:Get time range in a formatted time list using current time使用当前时间获取格式化时间列表中的时间范围
【发布时间】:2014-11-24 20:38:41
【问题描述】:

我有一个格式化的时间列表,如下所示:

00:30:00 - 01:00:00 - . . . . 23:30:00

如何从 Android 中的列表中获取 currentTime-(1 小时) 和 currentTime+(3 小时) 之间的范围?

SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
                    df.setTimeZone(TimeZone.getTimeZone("GTC"));
                    long now = Calendar.getInstance().getTimeInMillis();
                    Log.i("time", ""+now);


                    timeTableAdapter = new TimeTableAdapter(
                            TimeTableAdvanced.this, R.layout.timetable_item,
                            timeTableList);

                    adapterCount = timeTableAdapter.getCount();
                    for (int i = 0; i < adapterCount; i++) {

                        String inputString = timeTableList.get(i)
                                .getDepartureTime();

                        Date dat;
                        try {
                            dat = df.parse(inputString);

                            if (dat.getTime() <= now+(3*3600000) && dat.getTime() >= now-3600000 ) {
                                View item = timeTableAdapter.getView(i, null,
                                        null);
                                timetablelayout.addView(item);

                                View line = new View(TimeTableAdvanced.this);
                                line.setLayoutParams(new LinearLayout.LayoutParams(
                                        LayoutParams.MATCH_PARENT, 1));
                                line.setBackgroundColor(getResources()
                                        .getColor(R.color.black));
                                timetablelayout.addView(line);
                            }
                        } catch (ParseException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                    }

【问题讨论】:

  • 时间列表以什么格式存储?文本文件?细绳?列出对象?到目前为止,您尝试过什么?
  • 字符串格式。我尝试将字符串格式的时间和当前时间更改为毫秒,然后尝试通过检查差异是 -1 小时还是 3 小时来添加范围内的时间,但没有添加任何内容。
  • 您能发布到目前为止您尝试过的代码/解决方案吗?这应该会给你更好的反馈
  • 是的,我编辑了我的代码。请你现在检查一下好吗?

标签: android time time-format


【解决方案1】:

我认为这里没有任何困难。

假设您有 X = 当前时间,以毫秒为单位

HOUR_IN_MILLIS = 3600000
Time A = X - 1 hrs = X - HOUR_IN_MILLIS millis
Time B = X + 3 hrs = X + (3 * HOUR_IN_MILLIS) millis

如果您需要以 1/2 小时为间隔的范围,则进行迭代

for (long i = A; i <= B; i =+ HOUR_IN_MILLIS/2) { //add time to list }

【讨论】:

    【解决方案2】:

    我解决了我的问题。显然,我不仅在获取时间,而且还在以毫秒为当前时间进行约会。这是解决方案:

    SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
                    String date = df.format(Calendar.getInstance().getTime());
                    Date now;
                    long nowtime = 0;
                    try {
                        now = df.parse(date);
                        nowtime=now.getTime();
                        Log.i("time", ""+now);
                    } catch (ParseException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
    
    
    
                    timeTableAdapter = new TimeTableAdapter(
                            TimeTableAdvanced.this, R.layout.timetable_item,
                            timeTableList);
    
                    adapterCount = timeTableAdapter.getCount();
                    for (int i = 0; i < adapterCount; i++) {
    
                        String inputString = timeTableList.get(i)
                                .getDepartureTime();
    
                        Date dat;
                        try {
                            dat = df.parse(inputString);
                            Log.i("time1", ""+dat.getTime());
                            Log.i("time2", ""+nowtime);
                            if (dat.getTime() <= nowtime+(3*3600000) && dat.getTime() >= nowtime-3600000 ) {
                                View item = timeTableAdapter.getView(i, null,
                                        null);
                                timetablelayout.addView(item);
    
                                View line = new View(TimeTableAdvanced.this);
                                line.setLayoutParams(new LinearLayout.LayoutParams(
                                        LayoutParams.MATCH_PARENT, 1));
                                line.setBackgroundColor(getResources()
                                        .getColor(R.color.black));
                                timetablelayout.addView(line);
                            }
                        } catch (ParseException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
    
                    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      相关资源
      最近更新 更多