def mjd_to_ut_datetime(
            self,
            mjd,
            sqlDate=False,
            datetimeObject=False):
        """*mjd to ut datetime*

        Precision should be respected. 

        **Key Arguments:**
            - ``mjd`` -- time in MJD.
            - ``sqlDate`` -- add a 'T' between date and time instead of space
            - ``datetimeObject`` -- return a datetime object instead of a string. Default *False*

        .. todo::

            - replace getDateFromMJD in all code
            - replace getSQLDateFromMJD in all code

        **Return:**
            - ``utDatetime`` - the UT datetime in string format

        **Usage:**

            .. code-block:: python 

                from astrocalc.times import conversions
                converter = conversions(
                    log=log
                )
                utDate = converter.mjd_to_ut_datetime(
                    mjd=57504.61577585013
                )
                print utDate

                # OUT: 2016-04-26 14:46:43.033

                utDate = converter.mjd_to_ut_datetime(
                    mjd=57504.61577585013,
                    sqlDate=True
                )
                print utDate

                # OUT: 2016-04-26T14:46:43.033
        """
        self.log.info('starting the ``mjd_to_ut_datetime`` method')

        from datetime import datetime

        # CONVERT TO UNIXTIME
        unixtime = (float(mjd) + 2400000.5 - 2440587.5) * 86400.0
        theDate = datetime.utcfromtimestamp(unixtime)

        if datetimeObject == False:
            # DETERMINE PRECISION
            strmjd = repr(mjd)
            if "." not in strmjd:
                precisionUnit = "day"
                precision = 0
                utDatetime = theDate.strftime("%Y-%m-%d")
            else:
                lenDec = len(strmjd.split(".")[-1])
                if lenDec < 2:
                    precisionUnit = "day"
                    precision = 0
                    utDatetime = theDate.strftime("%Y-%m-%d")
                elif lenDec < 3:
                    precisionUnit = "hour"
                    precision = 0
                    utDatetime = theDate.strftime("%Y-%m-%d")
                elif lenDec < 5:
                    precisionUnit = "minute"
                    precision = 0
                    utDatetime = theDate.strftime("%Y-%m-%d %H:%M")
                else:
                    precisionUnit = "second"
                    precision = lenDec - 5
                    if precision > 3:
                        precision = 3
                    secs = float(theDate.strftime("%S.%f"))
                    secs = "%02.*f" % (precision, secs)
                    utDatetime = theDate.strftime("%Y-%m-%d %H:%M:") + secs

            if sqlDate:
                utDatetime = utDatetime.replace(" ", "T")
        else:
            utDatetime = theDate

        self.log.info('completed the ``mjd_to_ut_datetime`` method')
        return utDatetime