首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓时间SLots

安卓时间SLots
EN

Stack Overflow用户
提问于 2016-12-26 17:59:40
回答 2查看 2.4K关注 0票数 0

我在我的应用程序的RecyclerView中有这个绑定时间槽的方法,但我想要其他的方法

代码语言:javascript
复制
private ArrayList<String> getTimeSet() {
    ArrayList results = new ArrayList<String>();
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
    for (int i = 0; i < 9; i++) {
       Calendar calendar = new GregorianCalendar();
       calendar.add(Calendar.HOUR_OF_DAY, i);
       String day = sdf.format(calendar.getTime());
       results.add(i, day);
    }
    return results;
}

这是上面几行代码的结果

但我想要这样的东西,改变应用程序不从当前时间开始的前一个时间,例如,如果是4点,那么时间段必须从4点开始,建议我的朋友们。

EN

回答 2

Stack Overflow用户

发布于 2016-12-26 18:43:20

我已经修改了你的方法。请检查一下这个。只需传递布尔值,即可检查当天是否为当天。

代码语言:javascript
复制
private ArrayList<String> getTimeSet(boolean isCurrentDay) {
    ArrayList results = new ArrayList<String>();
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
    for (int i = 0; i < 9; i++) {
        Calendar calendar = new GregorianCalendar();
        if(!isCurrentDay)
            calendar.set(Calendar.HOUR_OF_DAY, 9);
        calendar.add(Calendar.HOUR_OF_DAY, i);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        String day1 = sdf.format(calendar.getTime());
        calendar.add(Calendar.HOUR, 1);
        String day2 = sdf.format(calendar.getTime());
        String day = day1 + " - " + day2;
        results.add(i, day);
    }
    return results;
}

您可以使用此方法获取第二天的时间段。但是,如果您将当前日期布尔值传递给上述方法,并检查日期是今天还是次日,效果会更好。

代码语言:javascript
复制
private ArrayList<String> getNextDayTimeSet() {
    ArrayList results = new ArrayList<String>();
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
    for (int i = 0; i < 9; i++) {
        Calendar calendar = new GregorianCalendar();
        calendar.set(Calendar.HOUR_OF_DAY, 9); //Added this line only
        calendar.add(Calendar.HOUR_OF_DAY, i);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        String day1 = sdf.format(calendar.getTime());
        calendar.add(Calendar.HOUR, 1);
        String day2 = sdf.format(calendar.getTime());
        String day = day1 + " - " + day2;
        results.add(i, day);
    }
    return results;
}
票数 0
EN

Stack Overflow用户

发布于 2016-12-29 17:26:16

我已经创建了一个用于生成时隙和日期槽的类。试一下代码,

代码语言:javascript
复制
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

/**
 *
 * @author Neeraj
 */
public class DateSlotClass {

    public static void main(String[] args) {
        ArrayList<String> dateList = getDataSet();
        System.out.println(dateList);
        for (String string : dateList) {
            System.out.println(getTimeSet(string));
        }
    }

    /**
     * Generates the time slots based on the date provided
     *
     * @param dateString the chosen date
     * @return list of times
     */
    private static ArrayList<String> getTimeSet(String dateString) {
        ArrayList results = new ArrayList();
        try {
            SimpleDateFormat inSdf = new SimpleDateFormat("EEE : dd-MMM");
            Date inDate = inSdf.parse(dateString);
            Calendar cal = Calendar.getInstance();
            cal.setTime(inDate);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR));
            cal.set(Calendar.HOUR, Calendar.getInstance().get(Calendar.HOUR) + 1);

            if (!isTodaysDate(cal)) {
                cal = Calendar.getInstance();
                cal.set(Calendar.HOUR, 9);
                cal.set(Calendar.MINUTE, 0);
            }

            results = new ArrayList<>();
            SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
            for (int i = 0; i < 9; i++) {
                String time1 = sdf.format(cal.getTime());
                cal.add(Calendar.HOUR, 1);
                String time2 = sdf.format(cal.getTime());
                String day = time1 + " - " + time2;
                results.add(i, day);
            }
        } catch (ParseException ex) {
            ex.printStackTrace();
        }
        return results;
    }

    /**
     * Test if the given date is today
     *
     * @param input the chosen date
     * @return true if date is todays
     */
    private static boolean isTodaysDate(Calendar input) {
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

        String inString = sdf.format(input.getTime());

        Calendar today = Calendar.getInstance();
        String todayString = sdf.format(today.getTime());

        return inString.equals(todayString);
    }

    /**
     * Generates the date slots based on the date provided
     *
     * @param dateString the chosen date
     * @return list of dates
     */
    private static ArrayList<String> getDataSet() {
        ArrayList results = new ArrayList<String>();
        SimpleDateFormat sdf = new SimpleDateFormat("EEE : dd-MMM");
        Calendar calendar = Calendar.getInstance();
        for (int i = 0; i < 7; i++) {
            String day = sdf.format(calendar.getTime());
            results.add(i, day);
            calendar.add(Calendar.DATE, 1);
        }
        return results;
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41329443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档