code: def dt_to_int(value, time_unit='us'):
      
      if pd:
          if isinstance(value, pd.Period):
              value = value.to_timestamp()
          if isinstance(value, pd.Timestamp):
              try:
                  value = value.to_datetime64()
              except:
                  value = np.datetime64(value.to_pydatetime())
      elif isinstance(value, cftime_types):
          return cftime_to_timestamp(value, time_unit)
  
      if isinstance(value, dt.date):
          value = dt.datetime(*value.timetuple()[:6])
  
      # Handle datetime64 separately
      if isinstance(value, np.datetime64):
          try:
              value = np.datetime64(value, 'ns')
              tscale = (np.timedelta64(1, time_unit)/np.timedelta64(1, 'ns'))
              return value.tolist()/tscale
          except:
              # If it can't handle ns precision fall back to datetime
              value = value.tolist()
  
      if time_unit == 'ns':
          tscale = 1e9
      else:
          tscale = 1./np.timedelta64(1, time_unit).tolist().total_seconds()
  
      try:
          # Handle python3
          return int(value.timestamp() * tscale)
      except:
          # Handle python2
          return (time.mktime(value.timetuple()) + value.microsecond / 1e6) * tscale
docs: Converts a datetime type to an integer with the supplied time unit.