}
public Node external_mutator_set(Node startAt) throws Exception {
startAt.isGoodArgsLength(true, 2);
SELF.require_SELF_mutable();
Node anode = startAt.getSubNode(1, Node.TYPE_HASH|Node.TYPE_NUMBER|Node.VTYPE_DELEGABLE);
if (anode.isNumber()) {
date.setTime((long) anode.getNumber());
}
else if (anode.getQType()==Node.TYPE_HASH) {
Calendar c = Calendar.getInstance();
int h = c.get(Calendar.HOUR_OF_DAY);
int m = c.get(Calendar.MINUTE);
int s = c.get(Calendar.SECOND);
int ms = c.get(Calendar.MILLISECOND);
int dd = c.get(Calendar.DAY_OF_MONTH);
int mm = c.get(Calendar.MONTH);
int yy = c.get(Calendar.YEAR);
Hash hash=anode.getHash();
h = getNumPairValueIfExists(h, hash, new Node(K_HOUR));
m = getNumPairValueIfExists(m, hash, new Node(K_MINUTE));
s = getNumPairValueIfExists(s, hash, new Node(K_SECOND));
ms = getNumPairValueIfExists(ms, hash, new Node(K_MILLIS));
dd = getNumPairValueIfExists(dd, hash, new Node(K_DAY));
mm = getNumPairValueIfExists(mm, hash, new Node(K_MONTH)) - 1;
yy = getNumPairValueIfExists(yy, hash, new Node(K_YEAR));
c.set(Calendar.MILLISECOND, ms);
c.set(yy, mm, dd, h, m, s);
date = c.getTime();
}
else {
// clonage de l'objet externe
Object obj = anode.getExternalInstanceOf(External_Date.class);
External_Date parent = (External_Date) obj;
date.setTime(parent.date.getTime());
date_default_format = parent.date_default_format;
time_default_format = parent.time_default_format;