In the third case, I didn't understand why you didn't divide (his_to -
his_from) / (my_to - my_from). Bearing that in mind, this made sense in my
head, but analyze it carefully:
def match(mf,mt,hf,ht):
mydiff = diff_in_seconds(mf,mt)
if (mf >= hf and mt <= ht) or (mf < hf and mt > ht):
mydiff = diff_in_seconds(mf,mt)
hisdiff = diff_in_seconds(hf,ht)
return min(1, hisdiff / mydiff)
else:
case1 = max(0, diff_in_seconds(hf, mt))
case2 = max(0, diff_in_seconds(mf, ht))
diff = min(case1, case2)
return (diff / mydiff)
def diff_in_seconds(d1,d2):
timedelta = d2 - d1
return float(timedelta)
print match(0,100,40,90)
2010/8/5 Alexandre González <[email protected]>
> 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 [email protected].
> To unsubscribe from this group, send email to
> [email protected]<django-users%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.