Played with this on Splunk 7.1.x. I have always created a search, used addinfo to the earliest latest, manipulated them as needed and then created tokens to use elsewhere. But I like your approach too.
Anyway, I removed some quotes and added a check for the case when latest is now...because that didn't seem to work as a modifier in the relative_time() function. Also, you may need to account for the all time scenario too...
Here's a very simple dashboard that just shows the tokens in the title of an empty panel.
<form>
<label>Timepicker Test</label>
<fieldset>
<input type="time" token="Time_Range" searchWhenChanged="true">
<label>Time</label>
<default>
<earliest>-15m</earliest>
<latest>now</latest>
</default>
<change>
<eval token="weekearliest">relative_time(relative_time(now(),$earliest$,-7d)</eval>
<eval token="weeklatest">if($latest$="now",now(),relative_time(now(),$latest$)</eval>
</change>
</input>
</fieldset>
<row>
<panel>
<title>$weekearliest$ $weeklatest$</title>
<single>
<search>
<query/>
</search>
</single>
</panel>
</row>
</form>
... View more