7
votes

Ajouter 1 ou 2 jours à une chaîne de date

J'ai une chaîne qui est peut-être date = "10/08/2011"; style horaire anglais.

C'est une chaîne simple, j'ai donc besoin de pouvoir ajouter 1 ou 2 jours.

J'ai essayé quelques choses mais je ne peux pas y arriver comme je suis normalement un gars PHP non JavaScript.

Toute aide est grandement appréciée.

merci

Lee

mise à jour

Pourquoi cela semble-t-il être si dur, j'ai été coincé sur cela pendant une heure maintenant ..... je veux donner au code une chaîne uneie qui est mm / jj / aaaa - 10/08/2011 et je veux de retour quelque chose comme 11/08/2011

pourquoi si dur ?? C'est pourquoi je déteste JavaScript et préférez PHP: - (


1 commentaires

Est-ce que cela répond à votre question? Ajouter des jours à la date de JavaScript


6 Réponses :


0
votes

Vous devrez convertir la chaîne en un objet de date. Avec cela, vous pouvez appeler les fonctions .geddate () et setDate () - Fonctions pour modifier la date.

mais pour y parvenir, la date doit être dans l'un des formats suivants:

  1. mm / jj / yyyy
  2. AAAA / MM / DD
  3. mm-dd-aaaa aaaa
  4. mmmm dd, yyyy
  5. mmm dd, aaaa

    Alors, vous devriez peut-être passer de jour et mois dans votre chaîne avant de la convertir, car je ne sais pas si le mois ou la journée est votre premier numéro.

    pour les dates européennes, Vous pouvez changer la chaîne dans le bon format avec quelque chose comme ceci: xxx

    liens qui pourrait vous aider avec ceci:

    http://programming.top54u.com/post/javascript-convert-string-a-date .aspx

    http: // www.adp-gmbh.ch/web/js/date/add_days.html

    Edit:

    jsfiddle avec un exemple: http://jsfiddle.net/4w8ym/11/


0 commentaires

14
votes

Pour ajouter 2 jours:

var theDate = new Date("10/28/2011");
theDate.setDate(theDate.getDate()+2);


2 commentaires

Cela me donne juste à Unix Timeestamp par l'apparence des choses :-(


Pour récupérer une chaîne, vous pouvez faire var thedateString = (thedate.getmonth () + 1) + '/' + thedate.getdate () + '/' + thedate.getutcullyear ();



0
votes

Essayez ceci xxx


11 commentaires

Cela me donne juste à Unix Timeestamp par l'apparence des choses :-(


Argh - c'est si proche mais j'ai besoin de pouvoir le faire dans le style européen ... jj / mm / aaa aaa toutes idées?


Vous pouvez essayer ma méthode avec la sous-chaîne (édité dans ma réponse). Il passe la journée et le mois. D'autre part, celui de KOOILNC devrait également fonctionner aussi bien, il inverse la chaîne en la transformant en format valide si vous utilisez des dates européennes.


@Shankersangoli - cela me donne juste 0/10/2011 - Je suis sur le point d'abandonner


@Lee: Il suffit de convertir la chaîne avec une seule fonction avant. La solution de ma ou de la KOOILNC doit fonctionner parfaitement pour l'obtenir dans le bon format -> jsfiddle.net/4w8ym/2 < / a>


C'est toujours une puish Mash ... ça commence avec 18/08/2011 en code et ne me donne pas le 19/08/2011


@Lee: Pourquoi est-ce une écrasée? -> jsfiddle.net/4w8ym/11 La seule chose dont vous auriez besoin à considérer, est-ce getmonth () renvoie un entier de 0 à 11. Donc, vous devriez peut-être vérifier, si le numéro retourné est <10 et ajoutez un 0 avant cela, avant de construire la chaîne finale


@Lee - Quel est le jour actuel et combien de jours êtes-vous à ajouter? J'ai testé mon code ça marche bien. Jetez un coup d'œil à ce violon Jsfiddle.net/e5pme


@Shankar - ok je vois votre exemple fonctionne, mais maintenant essayer 3 jours ou 7 ?? ça ne marche pas ... Je dois être capable d'ajouter 3,4,7 et 14


@Lee - a fait des modifications, veuillez jeter un coup d'œil à ce violon et si cela est parfait marque comme une réponse. Fiddle jsfiddle.net/e5pme/4


Je ne peux pas modifier, veuillez modifier si vous le pouvez. L'erreur est la fonction GetDay () qui devrait être getDate (). En fait, GetDay () retourne 0-6, dimanche au samedi, tandis que GetDate () retourne 1-31.



18
votes

Ce n'est pas tout ce complexe: xxx pré>

si vous le souhaitez vraiment simple - sans utiliser l'objet de date: p>

<pre></pre>


5 commentaires

Merci beaucoup kooilnc, c'était exactement si je cherchais


Notez que la solution simple ci-dessus ne fonctionnera pas si vous traversez une transition de mois ou d'année. Vous voulez vraiment utiliser l'objet de date ...


@Mike, bien sûr, c'est pourquoi l'utilisation d'un objet de date est logique. Je conseillerais contre la solution DatePlus1 , mais c'est une possibilité.


L'ajout a une priorité plus élevée que logique ou, vous y voudrez donc des crochets: nwdate.setdate (nwdate.getdate () + (ndays || 1));


Il s'agit d'une approche surchargée et non proche d'une approche à moitié compliquée, en particulier des pièces codées à code papier qui gèrent un format de date très spécifique.



0
votes

Vous devez appliquer une chaîne à interpréter à la date d'année mois et ou à la date de mois, ou dépendra des paramètres de l'utilisateur.

Vous pouvez assembler la date de la chaîne pour assurer le format de la date: P>

Date.fromDM=function(string){
    var A= string.match(/([1-9]\d*)/g);
    if(A.length!== 3) throw 'bad date'; 
    return new Date(A[2]*1, A[1]-1, A[0]*1);
}
Date.fromMD=function(string){
    var A= string.match(/([1-9]\d*)/g);
    if(A.length!== 3) throw 'bad date'; 
    return new Date(A[2]*1, A[0]-1, A[1]*1);
}



/*  Date.fromDM('10,08,2011')
return value: (Date)
Wed Aug 10 2011 00:00:00 GMT-0400 (Eastern Daylight Time)
*/

/*Date.fromMD('10,08,2011')
return value: (Date)
Sat Oct 08 2011 00:00:00 GMT-0400 (Eastern Daylight Time)
*/


0 commentaires

0
votes

J'ai essayé cela et j'ai obtenu le résultat.

p>

var dat = new Date('2018-03-16');

//use toISOString() to get the string value 2018-03-16T16:38:00.000Z
//substring(0,10) gets 2018-03-16
//reverse to gets 16-03-2018
var ret = dat.toISOString().substring(0, 10).split('-').reverse()

//rearranging to whatever format you want
var t = ret[0];
ret[0] = ret[1];
ret[1] = t;

//result
console.log(ret.join('/'))


0 commentaires