Refresh date display at midnight.

Fixes http://b/2341789
diff --git a/src/com/android/deskclock/DeskClock.java b/src/com/android/deskclock/DeskClock.java
index 4c02174..73a7448 100644
--- a/src/com/android/deskclock/DeskClock.java
+++ b/src/com/android/deskclock/DeskClock.java
@@ -177,7 +177,8 @@
         @Override
         public void onReceive(Context context, Intent intent) {
             final String action = intent.getAction();
-            if (Intent.ACTION_DATE_CHANGED.equals(action)) {
+            if (DEBUG) Log.d(LOG_TAG, "mIntentReceiver.onReceive: action=" + action + ", intent=" + intent);
+            if (Intent.ACTION_DATE_CHANGED.equals(action) || ACTION_MIDNIGHT.equals(action)) {
                 refreshDate();
             } else if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
                 handleBatteryUpdate(
@@ -570,10 +571,17 @@
         registerReceiver(mIntentReceiver, filter);
 
         Calendar today = Calendar.getInstance();
+        today.set(Calendar.HOUR_OF_DAY, 0);
+        today.set(Calendar.MINUTE, 0);
+        today.set(Calendar.SECOND, 0);
         today.add(Calendar.DATE, 1);
+        long alarmTimeUTC = today.getTimeInMillis() + today.get(Calendar.ZONE_OFFSET);
         mMidnightIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_MIDNIGHT), 0);
         AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
-        am.setRepeating(AlarmManager.RTC, today.getTimeInMillis(), AlarmManager.INTERVAL_DAY, mMidnightIntent);
+        am.setRepeating(AlarmManager.RTC, alarmTimeUTC, AlarmManager.INTERVAL_DAY, mMidnightIntent);
+        if (DEBUG) Log.d(LOG_TAG, "set repeating midnight event at "
+            + alarmTimeUTC + " repeating every "
+            + AlarmManager.INTERVAL_DAY + " with intent: " + mMidnightIntent);
 
         // un-dim when resuming
         mDimmed = false;