I tried again and it seems like the change happens when network synchronization is achieved. This is what I did,

~ ❯ sudo timedatectl set-ntp no

~ ❯ sudo timedatectl set-time 11:54

~ ❯ timedatectl status
               Local time: Wed 2024-08-28 11:54:04 PKT
           Universal time: Wed 2024-08-28 06:54:04 UTC
                 RTC time: Wed 2024-08-28 06:54:04
                Time zone: Asia/Karachi (PKT, +0500)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

~ ❯ timedatectl status
               Local time: Wed 2024-08-28 11:55:18 PKT
           Universal time: Wed 2024-08-28 06:55:18 UTC
                 RTC time: Wed 2024-08-28 06:55:18
                Time zone: Asia/Karachi (PKT, +0500)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

~ ❯ sudo timedatectl set-ntp yes

~ ❯ timedatectl status
               Local time: Wed 2024-08-28 11:55:42 PKT
           Universal time: Wed 2024-08-28 06:55:42 UTC
                 RTC time: Wed 2024-08-28 06:55:42
                Time zone: Asia/Karachi (PKT, +0500)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no

~ ❯ timedatectl status
               Local time: Wed 2024-08-28 11:56:52 PKT
           Universal time: Wed 2024-08-28 06:56:52 UTC
                 RTC time: Wed 2024-08-28 11:56:52
                Time zone: Asia/Karachi (PKT, +0500)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

The steps are

  1. Set ntp off and set time manually. Running timedatctl status shows RTC being same as UTC.
  2. Wait a minute and run, timedatectl status again. RTC is still UTC.
  3. Set ntp on. Running timedatectl status shows that is system clock is not synchronized and RTC is still UTC.
  4. A littler later, timedatectl status shows that synchronization has happened and RTC is now local time.

Probably the most non-standard thing about my system is that I am running Asahi Linux on apple silicon. Searching web doesn’t find similar cases, so maybe this is some quirk of RTC on apple silicon?