你如何比较时间字符串的时间部分?

时间:2011-09-28 17:21:53

标签: android parsing function time compare

我在偏好中有一些表示开始时间和结束时间的字符串。

我写了这个函数来确定当前时间是否在开始和结束时间之内。日期字符串的格式为“HH:mm”。该函数接受来自首选项的字符串。

我确定我缺少一些比较代码,因为我的解析会返回如下内容:

Sepu Sep 29 12:24:33 EDT 2011

但我需要的是得到这个: 12时24分

这是功能。你能帮我纠正编码吗?

感谢。

诚然, 伊马德

public static boolean currentTimeIsWithinStartAndEnd(String startTime,
        String endTime) {

    String pattern = "HH:mm";
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    boolean booleanValueToReturn = false;

    try {
        Date startTimeToCompare = sdf.parse(startTime);
        Date endTimeToCompare = sdf.parse(endTime);

        /*
         * These are for the current time in date format.
         */
        Date currentTime = new Date(System.currentTimeMillis());


        Log.w("Emad", "Current Time: " + currentTime + "   Start Time is: "
                + startTimeToCompare + "   End Time is : "
                + endTimeToCompare);



        /*
         * Check if current time is equal or greater than the start time.
         */
        if (currentTime.compareTo(startTimeToCompare) == 0
                || currentTime.compareTo(startTimeToCompare) == 1) {

             booleanValueToReturn = true;

            /*
             * Now check if the current time is equal or less than the end
             * time.
             */
            if (currentTime.compareTo(endTimeToCompare) == 0
                    || currentTime.compareTo(endTimeToCompare) == -1) {

                booleanValueToReturn = true;
            } else {
                 booleanValueToReturn = false;
            }
        } else {
             booleanValueToReturn = false;
        }

    } catch (java.text.ParseException e) {
    }

    return booleanValueToReturn;

1 个答案:

答案 0 :(得分:1)

您正在使用SimpleDateFormat。

String pattern =“HH:mm”应该是输入日期字符串所在的格式。否则SimpleDateFormat将如何知道哪个部分代表什么。

创建两个SimpleDateFormat,f1(带输入字符串格式)和f2(带输出字符串格式);

使用f1.parse()获取输入字符串的Date对象。

然后在此Date对象上使用f2.format()来获取输出字符串表示。

有关如何指定日期格式的详细信息,请参阅SimpleDateFormat

public static boolean currentTimeIsWithinStartAndEnd(String startTime,
        String endTime) {

           // assuming input date string is of format MM/dd/yyyy. Change it according to your needs. 

            String inputPattern = "MM/dd/yyyy";
            String outputPattern = "HH:mm";
            SimpleDateFormat inputFormatter = new SimpleDateFormat(inputPattern);
            SimpleDateFormat outputFormatter = new SimpleDateFormat(outputPattern);

            Date startTimeToCompare = inputFormatter.parse(startTime);
            String dateInRequiredFormat = outputFormat.format(startTimeToCompare);