5G NR: SIB9


5G NR system information in general is discussed in detail in the post 5G NR:System Information. This post discusses SIB9 in detail.
SIB9 contains information related to GPS time and Coordinated Universal Time (UTC). The UE may use the parameters provided in SIB9 to obtain the UTC, the GPS and the local time.
The UE may use the time information for numerous purposes, possibly involving upper layers e.g. to assist GPS initialisation, to synchronise the UE clock etc.
General Information
SIB9 is mapped to BCCH logical channel and is either broadcast periodically on DL-SCH or broadcast on-demand on DL-SCH (i.e. upon request from UEs in RRC_IDLE or RRC_INACTIVE) or sent in a dedicated manner on DL-SCH to UEs in RRC_CONNECTED.
SIB9 is carried in SystemInformation (SI) messages, which are transmitted on the DL-SCH. SIB1 contains scheduling information for SI-message carrying SIB9. For more information about scheduling of SI-messages, refer to 5G NR: System Information.
SIB9 can be configured to be cell specific or area specific, using an indication in SIB1. The cell specific SIB is applicable only within a cell that provides the SIB while the area specific SIB is applicable within an area referred to as SI area, which consists of one or several cells and is identified by systemInformationAreaID.
Contests of SIB9
Overview of SIB9 contents presented below.

SIB9

timeInfo

       timeInfoUTC INTEGER (0 … 549755813887)
       dayLightSavingTime BIT STRING ( SIZE (2) )
       leapSeconds INTEGER (-127 … 128)
       localTimeOffset INTEGER (-63 … 64)


timeInfo
timeInfoUTC is Coordinated Universal Time corresponding to the SFN boundary at or immediately after the ending boundary of the SI-window in which SIB9 is transmitted. The field counts the number of UTC seconds in 10 ms units since 00:00:00 on Gregorian calendar date 1 January, 1900 (midnight between Sunday, December 31, 1899 and Monday, January 1, 1900).
-    The UE may use this field together with the leapSeconds field to obtain GPS time as follows: GPS Time (in seconds) = timeInfoUTC (in seconds) - 2,524,953,600 (seconds) + leapSeconds, where 2,524,953,600 is the number of seconds between 00:00:00 on Gregorian calendar date 1 January, 1900 and 00:00:00 on Gregorian calendar date 6 January, 1980 (start of GPS time).
This field is excluded when determining changes in system information, i.e. changes of timeInfoUTC should neither result in system information change notifications nor in a modification of valueTag in SIB1.
dayLightSavingTime indicates if and how daylight-saving time (DST) is applied to obtain the local time. The semantics are the same as the semantics of the Daylight-Saving Time IE in 24.008. The first/leftmost bit of the bit string contains the b2 of octet 3 and the second bit of the bit string contains b1 of octet 3 in the value part of the Daylight-Saving Time IE in 24.008 (as shown below);
First/Left Most bit value
Second bit value
DST
0
0
No adjustment for Daylight Saving Time
0
1
+1 hour adjustment for Daylight Saving Time
1
0
+2 hours adjustment for Daylight Saving Time
1
1
Reserved
leapSeconds is the number of leap seconds offset between GPS Time and UTC. UTC and GPS time are related i.e. GPS time -leapSeconds = UTC time.
localTimeOffset is the offset between UTC and local time in units of 15 minutes. Actual value = field value * 15 minutes. Local time of the day is calculated as UTC time + localTimeOffset.

Reference: 3GPP TS 38.331 and 24.008