libarchive(3)
provides a high-resolution interface.
The timestamps are truncated automatically depending on the archive format
(for archiving) or the filesystem capabilities (for restoring).

All timestamp fields are optional.
The
XXX_unset()
functions can be used to mark the corresponding field as missing.
The current state can be queried using
XXX_is_set().
Unset time fields have a second and nanosecond field of 0.