2017-08-17 6 views
0

J'essaie de transmettre un nombre (date en ms) à une fonction dans un module de bibliothèque. Le nombre est foutu!JXA: Le nombre est modifié lorsqu'il est transmis en tant que paramètre au module de bibliothèque?

Voici un simple coup d'oeil (fonction MailUtils.showNum n'a qu'une seule ligne, le même appel de journal comme on le voit ci-dessous):

n = Number(todayMs - mbRetMs); 
Logger.logDebug("Num = " + n + "; as Date = " + new Date(n)); 
MailUtils.showNum(n); 

Log: 
/* Num = 1500396760628; as Date = Tue Jul 18 2017 12:52:40 GMT-0400 (EDT) */ 
/* Num = 1453174324; as Date = Sat Jan 17 1970 14:39:34 GMT-0500 (EST) */ 

Sérieusement ???

Que se passe-t-il? On dirait que d'une certaine manière, il s'agit d'une date et passe la date d'origine (la date à partir de laquelle les ms sont comptés)?

Répondre

0

LOL, Int32 Débordement #Fail. Ce que vous voyez est les 32 bits les moins significatifs de votre entier [64 bits] original; les bits élevés ont tous été dépouillés.

Odd en soi, puisque JS utilise Double en interne; probablement un bug dans JXA. (Il en a beaucoup.)

Si vous aimez JavaScript I fortement recommandons d'utiliser Node.js à la place. JXA est un déchet en comparaison, et avec les technologies OSA maintenant en mode maintenance, je n'imagine pas qu'il sera jamais réparé.

+0

Merci. Je vais jeter un oeil à node.js ou peut-être regarder ce que Python a à offrir à cet égard. – Crashmeister