@@ -15,40 +15,54 @@ def create_event_timestamp_filter(begin_date=None, end_date=None):
1515 begin_date: The begin date for the range.
1616 end_date: The end date for the range.
1717 """
18- end_date = _get_end_date_with_eod_time_if_needed ( end_date )
18+
1919 if begin_date and end_date :
20- return _create_in_range_filter (begin_date , end_date )
20+ min_timestamp = _parse_min_timestamp (begin_date )
21+ max_timestamp = _parse_max_timestamp (end_date )
22+ return _create_in_range_filter (min_timestamp , max_timestamp )
2123 elif begin_date and not end_date :
22- return _create_on_or_after_filter (begin_date )
24+ min_timestamp = _parse_min_timestamp (begin_date )
25+ return _create_on_or_after_filter (min_timestamp )
2326 elif end_date and not begin_date :
24- return _create_on_or_before_filter (end_date )
27+ max_timestamp = _parse_max_timestamp (end_date )
28+ return _create_on_or_before_filter (max_timestamp )
29+
30+
31+ def _parse_max_timestamp (end_date ):
32+ if len (end_date ) == 1 :
33+ end_date = _get_end_date_with_eod_time_if_needed (end_date )
34+ max_time = _parse_timestamp (end_date )
35+ max_time = _add_milliseconds (max_time )
36+ else :
37+ max_time = _parse_timestamp (end_date )
38+
39+ return convert_datetime_to_timestamp (max_time )
40+
41+
42+ def _add_milliseconds (max_time ):
43+ return max_time + timedelta (milliseconds = 999 )
2544
2645
27- def _create_in_range_filter (begin_date , end_date ):
28- min_timestamp = _parse_min_timestamp (begin_date )
29- max_timestamp = _parse_timestamp (end_date )
46+ def _create_in_range_filter (min_timestamp , max_timestamp ):
3047 _verify_timestamp_order (min_timestamp , max_timestamp )
3148 return EventTimestamp .in_range (min_timestamp , max_timestamp )
3249
3350
34- def _create_on_or_after_filter (begin_date ):
35- min_timestamp = _parse_min_timestamp (begin_date )
51+ def _create_on_or_after_filter (min_timestamp ):
3652 return EventTimestamp .on_or_after (min_timestamp )
3753
3854
39- def _create_on_or_before_filter (end_date ):
40- max_timestamp = _parse_timestamp (end_date )
55+ def _create_on_or_before_filter (max_timestamp ):
4156 return EventTimestamp .on_or_before (max_timestamp )
4257
4358
4459def _get_end_date_with_eod_time_if_needed (end_date ):
45- if end_date and len (end_date ) == 1 :
46- return end_date [0 ], "23:59:59"
47- return end_date
60+ return end_date [0 ], "23:59:59"
4861
4962
5063def _parse_min_timestamp (begin_date_str ):
51- min_timestamp = _parse_timestamp (begin_date_str )
64+ min_time = _parse_timestamp (begin_date_str )
65+ min_timestamp = convert_datetime_to_timestamp (min_time )
5266 boundary_date = datetime .utcnow () - timedelta (days = _MAX_LOOK_BACK_DAYS )
5367 boundary = convert_datetime_to_timestamp (boundary_date )
5468 if min_timestamp and min_timestamp < boundary :
@@ -68,9 +82,9 @@ def _parse_timestamp(date_and_time):
6882 date_str = _join_date_and_time (date_and_time )
6983 date_format = u"%Y-%m-%d" if len (date_and_time ) == 1 else u"%Y-%m-%d %H:%M:%S"
7084 time = datetime .strptime (date_str , date_format )
85+ return time
7186 except ValueError :
7287 raise ValueError (_FORMAT_VALUE_ERROR_MESSAGE )
73- return convert_datetime_to_timestamp (time )
7488
7589
7690def _join_date_and_time (date_and_time ):
0 commit comments