You can use Cache-Control’s max-age instead that indicated the number of second relative to the response time:
The expiration time of an entity MAY be specified by the origin server using the Expires header (see section 14.21). Alternatively, it MAY be specified using the max-age directive in a response. When the max-age cache-control directive is present in a cached response, the response is stale if its current age is greater than the age value given (in seconds) at the time of a new request for that resource.
An example:
header('Cache-Control: max-age=28800');
Note that if both Expires and Cache-Control’s max-age are present, max-age is preferred over Expires:
If a response includes both an Expires header and a max-age directive, the max-age directive overrides the Expires header, even if the Expires header is more restrictive.