2017-09-18 8 views
0

私は2つの時間値を追加する必要があるmagnifyChart関数を実装しました。しかし、私はそうするとき、それを文字列として考え、それを代わりに連結します。私はこれらの2つの値の減算を実行しても、正しい結果が得られます。 2つの日付の値を追加すると正しい結果が得られますか?2つの日付値を追加できません角度js

function magnifyChart (timeA, timeB) { 
    var newTimeA; 
    var newTimeB; 
    var quarterSize = Math.floor((timeB - timeA)/4); 
    logger.info("timeA", timeA); //Fri Sep 08 2017 17:45:19 GMT-0400 (EDT) 
    logger.info("timeB", timeB); //Sun Oct 01 2017 16:01:51 GMT-0400 (EDT) 
    logger.info("quarterSize", quarterSize); //495248155 
    newTimeA = Math.floor(parseInt(timeA) + parseInt(quarterSize)); 
    newTimeB = Math.floor(timeB - quarterSize); 
    logger.info("newTimeA", newTimeA); 
    logger.info("newTimeB", newTimeB);//1506392863689 
    return [timeA + quarterSize, timeB - quarterSize]; 
} 
+1

この質問にAngularJsはありません。これはjavascriptの日付質問です。 – pegla

+0

私はちょうど私が問題に直面している機能を追加しました。私のプロジェクト全体が角度jsで行われるので、角の日付フィルターでこの問題を解決できる場合は、それを行うことができます。 – user2128

答えて

0

date.getTime()を使用すると、日付を整数(タイムスタンプ)に変換できます。数学をした後、new Date(integer)を実行することで、それを日付に戻すことができます。

+0

はい、date.getTime()を実行した後、Date文字列に変換し直していました。ありがとう:) – user2128

1

ティメアTIMEBは、Dateオブジェクトであれば、その後に:

newTimeA = Math.floor(parseInt(timeA) + parseInt(quarterSize)); 

表現parseInt(timeA)が戻るかもしれない、数にそれを解析しようとすると、その後、最初の文字列にティメアを強要されます番号またはNaN。これを修正するには

、最も簡単な方法は、unary + operatorを使用することです:

newTimeA = +timeA + quarterSize; 

両方の値が既に整数であり、彼らは別の整数を生成しなければならない追加するので、Math.floorの必要はありません。

発現+timeAMath.floorの整数でなければならない整数であることが指定されている(またはNaNが、Math.floorがそれを修正しないであろう)、その時間値を返し、quarterSizeう中:

var quarterSize = Math.floor((timeB - timeA)/4); 

次の2つの日付を引くときは、-オペレータは最初の両方の数値に強制変換、そうtimeB - timeA特別な処理をせずに「働きます」。

あなたがnewTimeBnewTimeAを生成するが、何のためにそれらを使用していないので、私は、彼らが唯一、デバッグのためだと推測します。 +timeB - quarterSizeの場合

return [new Date(+timeA + quarterSize), 
      new Date(+timeB - quarterSize)]; 

NB 、単項+ ISN:

だからあなたのコードはに削減:あなたは、代わりに時間値の日付を返すようにしたい場合は

function magnifyChart (timeA, timeB) { 
    var quarterSize = Math.floor((timeB - timeA)/4); 
    return [+timeA + quarterSize, +timeB - quarterSize]; 
} 

減算は日付を強制的に数値に変換するので必要ですが、コードの整合性を保つためにメンテナンスに役立つ可能性があります。

+0

ちょっとありがとう!私は知っていなかった+ timeAは時間値を返します。私は新しいことを学ばなければならない。そしてそれはうまく動作します:) – user2128

関連する問題