# PRExplodedTime A clock/calendar representation of times. ## Syntax ```{code} #include typedef struct PRExplodedTime { PRInt32 tm_usec; PRInt32 tm_sec; PRInt32 tm_min; PRInt32 tm_hour; PRInt32 tm_mday; PRInt32 tm_month; PRInt16 tm_year; PRInt8 tm_wday; PRInt16 tm_yday; PRTimeParameters tm_params; } PRExplodedTime; ``` ## Description The {ref}`PRExplodedTime` structure represents clock/calendar time. {ref}`PRExplodedTime` has the familiar time components: year, month, day of month, hour, minute, second. It also has a microsecond component, as well as the day of week and the day of year. In addition, {ref}`PRExplodedTime` includes a {ref}`PRTimeParameters` structure representing the local time zone information, so that the time point is non-ambiguously specified. The essential members of {ref}`PRExplodedTime` are: > - `tm_year`: absolute year, AD (by "absolute," we mean if the year is > 2000, this field's value is 2000). > - `tm_month`: number of months past tm_year. The range is [0, 11]. 0 > is January and 11 is December. > - `tm_mday`: the day of month. The range is [1, 31]. Note that it > starts from 1 as opposed to 0. > - `tm_hour`: number of hours past tm_mday. The range is [0, 23]. > - `tm_min`: number of minutes past tm_hour. The range is [0, 59]. > - `tm_sec`: number of seconds past tm_min. The range is [0, 61]. The > values 60 and 61 are for accommodating up to two leap seconds. > - `tm_usec`: number of microseconds past tm_sec. The range is [0, > 999999]. > - `tm_params`: a `PRTimeParameters` structure representing the > local time zone information. The nonessential members of {ref}`PRExplodedTime` are: > - `tm_wday`: day of week. The range is [0, 6]. 0 is Sunday, 1 is > Monday, and 6 is Saturday. > - `tm_yday`: day of year. The range is [0, 365]. 0 is the 1st of > January. On input to NSPR functions, only the essential members of {ref}`PRExplodedTime` must be specified. The two nonessential members (day of week and day of year) are ignored by NSPR functions as input. When an NSPR function returns a {ref}`PRExplodedTime` object or sets a {ref}`PRExplodedTime` object as output, all of the {ref}`PRExplodedTime` members are set, including the nonessential members. You can also use `PR_NormalizeTime()` to calculate the values of the nonessential members.