Laurent, Maybe I’m misunderstanding your code, but it looks like you might be confused getting and setting TV values. My apologies if this is off the mark. When you have a TV object in code, simply getting and setting its value deals only with the *default* value of the TV.
To get or set the value of the TV for a specific document, you need to specify the resource ID of the resource you want to set it for. So, to get or set the value for the current resource :
$id = $modx->resource->get('id');
$val = $tv->getValue($id) // get raw content (a Unix timestamp in this case)
$val = $tv->renderOutput($id) // get processed content (a datestring in this case)
$tv->setValue($id,'someNewValue');
I can’t remember if the value in the last line would be a timestamp or a date string (or if it will accept either).
I think one option for you would be to get the date string with renderOutput(), and just strip off the time with:
$date = substr($date,0,10);