old_contents: import dateparser
  import pytz
  
  from datetime import datetime
  
  
  def date_to_milliseconds(date_str):
      """Convert UTC date to milliseconds
  
      If using offset strings add "UTC" to date string e.g. "now UTC", "11 hours ago UTC"
  
      See dateparse docs for formats http://dateparser.readthedocs.io/en/latest/
  
      :param date_str: date in readable format, i.e. "January 01, 2018", "11 hours ago UTC", "now UTC"
      :type date_str: str
      """
      # get epoch value in UTC
      epoch = datetime.utcfromtimestamp(0).replace(tzinfo=pytz.utc)
      # parse our date string
      d = dateparser.parse(date_str)
      # if the date is not timezone aware apply UTC timezone
      if d.tzinfo is None or d.tzinfo.utcoffset(d) is None:
          d = d.replace(tzinfo=pytz.utc)
  
      # return the difference in time
      return int((d - epoch).total_seconds() * 1000.0)
  
  
  def interval_to_milliseconds(interval):
      """Convert a Binance interval string to milliseconds
  
      :param interval: Binance interval string, e.g.: 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M
      :type interval: str
  
      :return:
           int value of interval in milliseconds
           None if interval prefix is not a decimal integer
           None if interval suffix is not one of m, h, d, w, or M
  
      Note that a Binance month interval, 1M, is 31 days.
  
      >>> interval_to_milliseconds('1m')
      60000
  
      >>> interval_to_milliseconds('2h')
      7200000
  
      >>> interval_to_milliseconds('1M') == interval_to_milliseconds('31d')
      True
  
      >>> interval_to_milliseconds('3.3d')
      >>> interval_to_milliseconds('4Y')
      """
      seconds_per_unit = {
          "m": 60,
          "h": 60 * 60,
          "d": 24 * 60 * 60,
          "w": 7 * 24 * 60 * 60,
          "M": 31 * 24 * 60 * 60,
      }
      try:
          return int(interval[:-1]) * seconds_per_unit[interval[-1]] * 1000
      except (ValueError, KeyError):
          return None
  
new_contents: import dateparser
  import pytz
  
  from datetime import datetime
  
  
  def date_to_milliseconds(date_str):
      """Convert UTC date to milliseconds
  
      If using offset strings add "UTC" to date string e.g. "now UTC", "11 hours ago UTC"
  
      See dateparse docs for formats http://dateparser.readthedocs.io/en/latest/
  
      :param date_str: date in readable format, i.e. "January 01, 2018", "11 hours ago UTC", "now UTC"
      :type date_str: str
      """
      # get epoch value in UTC
      epoch = datetime.utcfromtimestamp(0).replace(tzinfo=pytz.utc)
      # parse our date string
      d = dateparser.parse(date_str)
      # if the date is not timezone aware apply UTC timezone
      if d.tzinfo is None or d.tzinfo.utcoffset(d) is None:
          d = d.replace(tzinfo=pytz.utc)
  
      # return the difference in time
      return int((d - epoch).total_seconds() * 1000.0)
  
  
  def interval_to_milliseconds(interval):
      """Convert a Binance interval string to milliseconds
  
      :param interval: Binance interval string, e.g.: 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w
      :type interval: str
      
      :return:
           int value of interval in milliseconds
           None if interval prefix is not a decimal integer
           None if interval suffix is not one of m, h, d, w
  
      """
      seconds_per_unit = {
          "m": 60,
          "h": 60 * 60,
          "d": 24 * 60 * 60,
          "w": 7 * 24 * 60 * 60,
      }
      try:
          return int(interval[:-1]) * seconds_per_unit[interval[-1]] * 1000
      except (ValueError, KeyError):
          return None
  
subject: Tidy up how interval_to_milliseconds works