When Did You Really Get That Notification?
On Relative Times in Our Phones

18 May 2020, by Chinmay and Aadi

Both iOS 13 and Android 10 display notification times in a relative format. They will tell you that a notification arrived 2 minutes ago or 1 hour ago instead of plainly displaying 12 pm or 12:00.

How long ago is “3h” exactly?

Most of the times, that’s more comfortable to read. It makes sense why they made this change, until of course you realise that the time they display is almost always inaccurate.

Relative formats need to be updated as time passes, which is an added complication when compared to using an absolute timestamp. It is up to the OS to decide how often that must happen. You probably don’t want a seconds counter ticking at every glance of the lock screen; even though that may be most accurate, it obviously is not the perfect way to implement such a feature. Ideally, we want to reach a perfect balance between readability and always-accurate stock-ticker madness.

How it is now

Imagine a notification arrives at exactly 12 pm.

Because it updates after every minute, the time shown is always less than the actual duration, by upto a minute – reasonable by most standards and not disturbing to look at. All well and good – until 60 minutes.

This is what you see as the notification ages:

Actual Time iOS & Android
12:00 now
12:02 2m ago
12:03 3m ago
12:59 59m ago
13:00 1h ago
13:30 1h ago
13:59 1h ago

Much like most Bollywood movies, the pain begins after an hour. Notice how the least count that was 1 minute for the first hour becomes 1 hour after that? For the whole second hour, the text stays the same: 1 hour. It will become 2 hours only after the 2 hours are completed!

Such a way of fitting numbers into fewer digits at the cost of accuracy is called truncation. Truncating 2.75 to an integer gives 2, whereas rounding will give 3. So when the least count jumps from one minute to one hour, the difference that truncation makes also increases with it. This is significant beyond the halfway point, where truncating and rounding yield different results. That makes it so much inaccurate.

Why it’s a problem

Look at the difference between the reported time and the actual time. For the first hour, the error is one minute. This means any time you look at a notification, you may assume that it is off by at most a full minute. Once the least count becomes one hour, the error also increases to one hour. If you see the time reported in hours, not minutes, then you must assume that the duration is off by an hour at most, half an hour on average.
The worst possible case is at the moment just before two hours. Even when it is 1:59 pm, a notification that comes in at exactly 12 pm will still claim to be from 1h ago.

Isn’t that absurd? Imagine someone asks for the time. If it was 1:55 pm, would you answer ‘1 pm’ or ‘2 pm’? Both have the same least count, yet the latter makes so much more sense.

Why is it this way?

We did a bit of research1 and think Android got notifications to work this way in Android Nougat(v7), while it looks like iOS 5 was the first one to introduce this change. Of course, the implementations have evolved with every release.

Despite being regarded as the better one in notification management, Android is worse when it comes to this. The notification timestamp never changes to absolute from relative. This becomes especially cumbersome to understand after a large amount of time has passed. Quite often, we end up backcalculating 9 hours from the present time, instead of that time making sense as it is displayed. In the phone app, I end up tapping into the details of a call log because the time in the list is too vague.

Actual Time iOS Android
15:59 3h ago 3h
16:00 12:00 4h
08:00 next day Yesterday, 12:00 1d

We think the major mobile operating systems show notifications this way, because they probably conceived that notifications do not go unnoticed for a long period of time – emails can go unread for a year, but not notifications. More often than not, notifications are responded to before the timestamps become too ambiguous to understand.

What we would like instead

We must stop truncating and start rounding. That is how we understand measurements when no other context is provided.

Next, increase the least count gradually. We can limit the maximum percentage error if we used fractions like 1¼h ago, and 1½h ago. We do use multiples of 15 minutes in our day-to-day life. Better yet, Android should switch to an absolute format after some time, like iOS does after 4 hours.

Some notifications are much more sensitive to ambiguity in time than others. It matters a lot whether somebody called about 2 hours ago or just over 1 hour ago – there’s no way to know from the notification itself. We presently have no metric in both iOS and Android to recognize timestamp accuracy for notifications.2 Why not have the choice to set that for all notifications?

  1. Basically, skimmed developer documentations and looked at a bunch of screenshots. ↩︎

  2. We know high-priority notifications in Android do exist – but they are for urgency, not accuracy. ↩︎