2017-08-17 10 views
0

ライブラリモジュール内の関数に数値(ミリ秒単位)を渡そうとしています。その数は台無しになる!ここでJXA:パラメータがライブラリモジュールに渡されたときに数値が変更されますか?

はシンプルな外観(下図のように機能MailUtils.showNum 1行だけ、同じログコールを持っている)である:真剣

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) */ 

???

*は何が起こっていますか?それはどういうわけか、それが日付であることがわかり、起源日付(msが数えられる日付)を渡すように見えますか?

答えて

0

LOL、Int32オーバーフロー#Fail。あなたが見ているのは元の[64ビット]整数の最下位32ビットです。上位ビットはすべて削除されています。

JS自体がDoubleを内部で使用するため、それ自体が奇妙です。おそらくJXAのバグでしょう。 (たくさんのものがあります)

JavaScriptが好きな人は強くではNode.jsを使用することをお勧めします。比較ではJXAはゴミであり、OSAテクノロジでは現在メンテナンスモードになっていますが、これは修正されるとは想像もしません。

+0

ありがとうございました。 node.jsを見てみるか、これに関してPythonが提供しているものを見てみましょう。 – Crashmeister

関連する問題