def normalize(self):
if self.tz is None or timezones.is_utc(self.tz):<EOL><INDENT>not_null = ~self.isna()<EOL>DAY_NS = ccalendar.DAY_SECONDS * <NUM_LIT><EOL>new_values = self.asi8.copy()<EOL>adjustment = (new_values[not_null] % DAY_NS)<EOL>new_values[not_null] = new_values[not_null] - adjustment<EOL><DEDENT>else:<EOL><INDENT>new_values = conversion.normalize_i8_timestamps(self.asi8, self.tz)<EOL><DEDENT>return type(self)._from_sequence(new_values,<EOL>freq='<STR_LIT>').tz_localize(self.tz)<EOL>
Convert times to midnight.

The time component of the date-time is converted to midnight i.e.
00:00:00. This is useful in cases, when the time does not matter.
Length is unaltered. The timezones are unaffected.

This method is available on Series with datetime values under
the ``.dt`` accessor, and directly on Datetime Array/Index.

Returns
-------
DatetimeArray, DatetimeIndex or Series
    The same type as the original data. Series will have the same
    name and index. DatetimeIndex will have the same name.

See Also
--------
floor : Floor the datetimes to the specified freq.
ceil : Ceil the datetimes to the specified freq.
round : Round the datetimes to the specified freq.

Examples
--------
>>> idx = pd.date_range(start='2014-08-01 10:00', freq='H',
...                     periods=3, tz='Asia/Calcutta')
>>> idx
DatetimeIndex(['2014-08-01 10:00:00+05:30',
               '2014-08-01 11:00:00+05:30',
               '2014-08-01 12:00:00+05:30'],
                dtype='datetime64[ns, Asia/Calcutta]', freq='H')
>>> idx.normalize()
DatetimeIndex(['2014-08-01 00:00:00+05:30',
               '2014-08-01 00:00:00+05:30',
               '2014-08-01 00:00:00+05:30'],
               dtype='datetime64[ns, Asia/Calcutta]', freq=None)