But they only want it to update once, not each time...
Right... you'd add a document level script that runs each time the file is opened but a conditional statement first checks if the date field has a value set the date only when that's not the case. The field would already be readonly. Something like...
var dateField = this.getField("date");
if (dateField.value == "") {
dateField.value = util.printd("mmmm dd, yyyy", new Date());
}
If you reset the form before distribution, the date field is blank. It gets filled when the file is opened and assuming they aren't filling it while flying over the international date line, the date that they open the form will be the same date that they save it. The field value gets saved when the file is saved. Not saving the form leaves the value as empty even though a value is visible before you close the file without saving.