wgrib2: -stats, -max, -min
The -unix_time option writes unix time in the inventory.
Unix time is defined by the number of seconds after 00:00 UTC Januay 1, 1970.
Unix time is used by the many operating systems, and by NetCDF files.
The -unix_time option depends on system/library functions
to calculate the unix time. It requires ansi C compatibility and it is
subject to overflows depnding on the definition of time_t.
The unix time is stored in time_t integer-type variable.
If time_t is a signed 32-bit integer, the integer will overflow in 1/19/2038
and is only valid between 12/13/1901 and 1/19/2038.
One valid solution to the year 2038 overflow problem is to define time_t as an unsigned 32-bit integer.
Then valid unix time are from 1/1/1970 to 2/7/2106. This solves the year 2038 overflow problem
but makes time prior to 1970 invalid.
The most common solution
is to make time_t a signed 64-bit integer which limits the largest year to 2,147,485,547.
That's enough time for dinosaurs to come and go. Here are the list
of systems which may have problems with unix_time.
- wgrib2 prior to v3.1.1, unix_time is converted to int (typically 32-bit int)
- 32-bit linux systems, time_t is 32-bit signed int until kernel 5.6, API needs to be fixed
- 32-bit QNX: 32-bit ONX use unsigned 32-bit integer for time_t
- old versions of BSD varients use signed 32-bit int for time_t
- Windows: depends on the compiler
unix_time is the number of seconds after 00:00 UTC 1/1/1970
prints the unix time for the reference and verification times
v3.1.1+: if the code detects a problem with the reference time, a fatal error occurs
prior to v3.1.1: if the code detects a problem with the time, -1 is printed
if there is no forecast time (ex. radar), the verification time is -1
$ wgrib2 test.grb2 -unix_time
unix_rt is the reference time
unix_vt is the verification time
-t (reference time),
-vt (verification time),