class_docstr: Fetch training curve data from CloudWatch Metrics for a specific training job.
docstr: Return a dict with two datetime objects.
  
  The dict includes the `start_time` and `end_time`, covering the interval
  of the training job.
  
  Returns:
      a dict with the `start_time` and `end_time`.
docstr_tok: ["Return","a","dict","with","two","datetime","objects",".","The","dict","includes","the","`","start_time","`","and","`","end_time","`",",","covering","the","interval","of","the","training","job",".","Returns",":","a","dict","with","the","`","start_time","`","and","`","end_time","`","."]
code: def _determine_timeinterval(self):
      """Return a dict with two datetime objects.
  
      The dict includes the `start_time` and `end_time`, covering the interval
      of the training job.
  
      Returns:
          a dict with the `start_time` and `end_time`.
      """
      description = self._sage_client.describe_training_job(
          TrainingJobName=self.name
      )
      start_time = (
          self._start_time or description["TrainingStartTime"]
      )  # datetime object
      # Incrementing end time by 1 min since CloudWatch drops seconds before finding the logs.
      # This results in logs being searched in the time range in which the correct log line was
      # not present.
      # Example - Log time - 2018-10-22 08:25:55
      #       Here calculated end time would also be 2018-10-22 08:25:55 (without 1 min addition)
      #       CW will consider end time as 2018-10-22 08:25 and will not be able to search the
      #           correct log.
      end_time = self._end_time or description.get(
          "TrainingEndTime", datetime.datetime.utcnow()
      ) + datetime.timedelta(minutes=1)
  
      return {"start_time": start_time, "end_time": end_time}
  
imports: from __future__ import print_function, absolute_import
  from abc import ABCMeta, abstractmethod
  from collections import defaultdict, OrderedDict
  import datetime
  import logging
  from six import with_metaclass
  from sagemaker.session import Session
  from sagemaker.utils import DeferredError
  from sagemaker.lineage import artifact
label_desc: Use image node_id 5 for calling the TrainingJobAnalytics obj's underlying member method code with example usage: obj._determine_timeinterval() and returns: dict