I've develope a "simple" function to calculate the difference between 2
dates, and the time that they are interpolated.

I need it to: I arrive to a site at a hour (my_from), I go out from the site
at a hour (my_to). Some friend arrive at the site at a hour (his_from) and
let it at a hour (his_to)

If I stay in the site after he arrives and before he goes out, the
"probability" of match is 1, if I let the site after he arrives, the
probability of match is 0... You can see the samples in the documentation.

I need to know if this is a good way to do, and if compare all the kinds of
matching (I've found 6). This is the code:

    def time_match(self, my_from, my_to, his_from, his_to):
        """
            I've found 6 general kinds of time matching. It's better to
explain it with graphics:

              (my_from)--A--(my_to)
            -------------------------
             (his_from)--B--(his_to)
        """

        #    |-A-|                           |-A-|
        # -------------------- or --------------------
        #           |--B--|        |--B--|
        if my_to < his_from or his_to < my_from:
            return 0

        #      |--A--|
        # --------------------
        #  |------B-------|
        elif my_from >= his_from and my_to <= his_to:
            return 1

        #    |-----A-------|
        # --------------------
        #        |-B-|
        elif my_from < his_from and my_to > his_to:
            my_diff_to_reuse = diff_in_seconds(my_from, my_to)
            diff = my_diff_to_reuse - self.diff_in_seconds(his_from, his_to)

            return (diff / my_diff_to_reuse)

        #   |---A---|
        # --------------------
        #       |---B---|
        elif my_from <= his_from and my_to <= his_to:
            diff = self.diff_in_seconds(his_from, my_to)

            return (diff / self.diff_in_seconds(my_from, my_to))

        #         |---A---|
        # --------------------
        #    |---B---|
        elif my_from >= his_from and my_to >= his_to:
            diff  = self.diff_in_seconds(my_from, his_to)

            return (diff / self.diff_in_seconds(my_from, my_to))

        # If I'm here I have a problem
        return 0


    def diff_in_seconds(date1, date2):
        # Initial from: http://www.bytemycode.com/snippets/snippet/304/
        timedelta = date2 - date1
        diff = timedelta.days*24*3600 + timedelta.seconds

        return abs(float(diff))

Thanks!
-- 
Please, don't send me files with extensions: .doc, .docx, .xls, .xlsx, .ppt
and/or .pptx
http://mirblu.com

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to