2010-09-23 4 views
0

Comment avoir une date et soustraire 1 an et avoir une seconde date pour une utilisation dans l'affichage et les caculations?Javascript besoin de deux instances de date Continuez à obtenir des références à la place

Je suis un newbe avec JS et me trouve lutte contre l'objet date
j'ai déclaré à la fois currentDate et purchaseDate Comme nouvelle date var() dans la zone globals Mais maintenant, en fonction je tente d'attribuer la date originale comme "currentDate et le purchaseDate" comme un an plus tard ,, L'alerte montre que j'ai changé le vaue de currentDate plutôt que la valeur de purchaseDate comme je l'ai prévu ..

Pas ce que je veux! Alors je me passer par référence vs par valeur, mais ne sais pas comment obtenir ce pour que j'ai deux valeurs distinctes pour la currentDate et la purchaseDate (un an plus tôt)

currentDate = data.getValue(0,2); 
purchaseDate = valueOf(data.getValue(0,2)); 
purchaseDate.setFullYear(purchaseDate.getFullYear()-1); 

alert(purchaseDate); 

si ce code échoue également; C'est ,, la date d'achat est de 1 an en arrière, mais il en est de date

currentDate = data.getValue(0,2); 
    purchaseDate = data.getValue(0,2); 
      purchaseDate.setFullYear(purchaseDate.getFullYear()-1); 
alert(purchaseDate); 

Répondre

1

Le code qui vous avez publié est trop ambigu pour indiquer de manière fiable la cause racine de votre problème (on ne sait pas ce que valueOf() est en train de faire), mais au fond , vous devez en effet créer une nouvelle instance Date basée sur l'heure de l'autre Date. Voici comment vous pourriez faire cela, en supposant que currentDate est aussi un vrai Date.

var purchaseDate = new Date(currentDate.getTime()); 

Voici un exemple complet de coup d'envoi:

var currentDate = new Date(); 
var purchaseDate = new Date(currentDate.getTime()); 
purchaseDate.setFullYear(purchaseDate.getFullYear() - 1); 
alert(currentDate); // Today. 
alert(purchaseDate); // Today minus one year. 
+0

Le problème avec ce code est qu'il suppose que les deux dates sont indépendantes, je dois calculer une date à partir de l'autre et qui est la raison pour laquelle la question de référence apparaît même si je dépose le valueOF, ce que je faisais pour essayer de forcer une nouvelle instance. Donc, j'ai besoin d'obtenir currentDate D'un tableau Comme indiqué puis calculer le purchaseDate comme 1 an en arrière de la date que j'ai reçu de la table, donc il n'est pas basé sur la date du système ... plutôt que je reçois par requête Ajax . Toutes les tentatives jusqu'ici semblent passer des références si à la fois currentDate et purchaseDate sont changés – dartdog

+0

Donc, 'var purchaseDate = new Date (currentDate.getTime());' ne fonctionnait pas pour vous? En passant, l'exemple complet est juste un exemple de coup d'envoi. Vous avez juste substituer l'exemple avec les valeurs de votre situation. Par exemple. 'var currentDate = data.getValue (0,2);'. Comme je n'ai aucune idée de ce que 'data.getValue (0,2)' est en train de faire, je ne l'ai pas inclus dans l'exemple pour éviter les herrings rouges. Tant qu'il renvoie 'Date', ce qui précède devrait fonctionner. – BalusC