diff --git a/src/com/android/calendar/CalendarViewAdapter.kt b/src/com/android/calendar/CalendarViewAdapter.kt
index 44590b8..3c0f962 100644
--- a/src/com/android/calendar/CalendarViewAdapter.kt
+++ b/src/com/android/calendar/CalendarViewAdapter.kt
@@ -260,7 +260,7 @@
             DateUtils.formatDateRange(mContext, mFormatter, mMilliTime, mMilliTime,
                     DateUtils.FORMAT_SHOW_WEEKDAY, mTimeZone).toString()
         }
-        return dayOfWeek.toUpperCase()
+        return dayOfWeek.uppercase()
     }
 
     // Builds strings with different formats:
@@ -367,4 +367,4 @@
             refresh(context)
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/com/android/calendar/DayView.kt b/src/com/android/calendar/DayView.kt
index d5f4f48..7f0cd7a 100644
--- a/src/com/android/calendar/DayView.kt
+++ b/src/com/android/calendar/DayView.kt
@@ -469,11 +469,11 @@
             val index: Int = i - Calendar.SUNDAY
             // e.g. Tue for Tuesday
             mDayStrs!![index] = DateUtils.getDayOfWeekString(i, DateUtils.LENGTH_MEDIUM)
-                .toUpperCase()
+                .uppercase()
             mDayStrs!![index + 7] = mDayStrs!![index]
             // e.g. Tu for Tuesday
             mDayStrs2Letter!![index] = DateUtils.getDayOfWeekString(i, DateUtils.LENGTH_SHORT)
-                .toUpperCase()
+                .uppercase()
 
             // If we don't have 2-letter day strings, fall back to 1-letter.
             if (mDayStrs2Letter!![index]!!.equals(mDayStrs!![index])) {
@@ -494,8 +494,8 @@
         p.setTextSize(HOURS_TEXT_SIZE)
         p.setTypeface(null)
         handleOnResume()
-        mAmString = DateUtils.getAMPMString(Calendar.AM).toUpperCase()
-        mPmString = DateUtils.getAMPMString(Calendar.PM).toUpperCase()
+        mAmString = DateUtils.getAMPMString(Calendar.AM).uppercase()
+        mPmString = DateUtils.getAMPMString(Calendar.PM).uppercase()
         val ampm = arrayOf(mAmString, mPmString)
         p.setTextSize(AMPM_TEXT_SIZE)
         mHoursWidth = Math.max(
diff --git a/src/com/android/calendar/Utils.kt b/src/com/android/calendar/Utils.kt
index 52af887..502a035 100644
--- a/src/com/android/calendar/Utils.kt
+++ b/src/com/android/calendar/Utils.kt
@@ -1310,7 +1310,7 @@
             mTZUtils?.formatDateRange(context, millis, millis, flags)
                 .toString()
         }
-        dayViewText = dayViewText.toUpperCase()
+        dayViewText = dayViewText.uppercase()
         return dayViewText
     }
 
@@ -1574,4 +1574,4 @@
         var color = 0 // Calendar color or black for conflicts =
         var day = 0 // quick reference to the day this segment is on =
     }
-}
\ No newline at end of file
+}
diff --git a/src/com/android/calendar/month/MonthByWeekFragment.kt b/src/com/android/calendar/month/MonthByWeekFragment.kt
index b6882b7..ea50ecd 100644
--- a/src/com/android/calendar/month/MonthByWeekFragment.kt
+++ b/src/com/android/calendar/month/MonthByWeekFragment.kt
@@ -286,7 +286,7 @@
             mDayLabels[i - Calendar.SUNDAY] = DateUtils.getDayOfWeekString(
                     i,
                     DateUtils.LENGTH_MEDIUM
-            ).toUpperCase()
+            ).uppercase()
         }
     }
 
@@ -494,4 +494,4 @@
         // changing
         private const val LOADER_THROTTLE_DELAY = 500
     }
-}
\ No newline at end of file
+}
diff --git a/src/com/android/calendar/month/SimpleDayPickerFragment.kt b/src/com/android/calendar/month/SimpleDayPickerFragment.kt
index c0bce5d..6147561 100644
--- a/src/com/android/calendar/month/SimpleDayPickerFragment.kt
+++ b/src/com/android/calendar/month/SimpleDayPickerFragment.kt
@@ -224,7 +224,7 @@
         mDayLabels = arrayOfNulls(7)
         for (i in Calendar.SUNDAY..Calendar.SATURDAY) {
             mDayLabels[i - Calendar.SUNDAY] = DateUtils.getDayOfWeekString(i,
-                    DateUtils.LENGTH_SHORTEST).toUpperCase()
+                    DateUtils.LENGTH_SHORTEST).uppercase()
         }
     }
 
@@ -613,4 +613,4 @@
         goTo(initialTime, false, true, true)
         mHandler = Handler()
     }
-}
\ No newline at end of file
+}
