If I got you right, the answer is yes, QGIS supports dynamic layer names.
You would need to write a Python macro to be ran every time the project is opened. This would be the workflow:
Go to QGIS->Project->Project Properties
and replace openProject()
with the following Python code:
def openProject():
import re, qgis
iface = qgis.utils.iface
layers = iface.mapCanvas().layers()
for lyr in layers:
# Get date from layer
it=lyr.getFeatures()
feat = next(it)
idx = lyr.fieldNameIndex('traffic_da')
currDate = feat.attributes()[idx]
# Set new layer name
name = lyr.name()
if re.search(' on \d{2,2}.\d{2,2}.\d{4,4}$', name):
name = name[:-14]
name = name + " on " + currDate
lyr.setLayerName( name )

Note 1: I tested it on shapefiles, so the field which I take dates from is traffic_da
because Shapefiles do not support more letters in field names. Adjust that in the code to work on your layers.
Note 2: Depending on your project configuration, you should add validation code to act only on the layers you want. For instance, if you run the code on raster layers, errors will appear for sure. If you need help with this, open a new question, I can help you.
Make sure you enable macros on your project, this way: Settings->Options->General->Enable macros: Always
Load your layers to the project.
Save your project.
Every time you open your project from this point, your layer names will be dynamic, the date will be taken from the field traffic_date
on each layer's attribute table.
After the first time I opened the project, this is how my layer names were dynamically generated:

I think this can help you to get started. Tell me if you face non-obvious troubles.