2010-02-28 8 views
1

J'ai une chaîne qui contient mois/date et j'ai besoin d'insérer l'année. La chaîne ressemble:JavaScript date: Comment ajouter une année à une chaîne contenant mm/dd?

Last Mark:: 2/27 6:57 PM 

Je veux convertir la chaîne à quelque chose comme:

Last Mark:: 2010/02/27 18:57 

Dans ce cas, il n'y aura pas d'entrées plus d'un an. Par exemple, si la date était 10/12, on peut supposer que l'année est 2009.

Quelle est la meilleure méthode pour cela?

Répondre

2

Après de Adam's suggestion:

function convertDate(yourDate) { 
    var today = new Date(); 
    var newDate = new Date(today.getFullYear() + '/' + yourDate); 

    // If newDate is in the future, subtract 1 from year 
    if (newDate > today) 
     newDate.setFullYear(newDate.getFullYear() - 1); 

    // Get the month and day value from newDate 
    var month = newDate.getMonth() + 1; 
    var day = newDate.getDate(); 

    // Add the 0 padding to months and days smaller than 10 
    month = month < 10 ? '0' + month : month;  
    day = day < 10 ? '0' + day : day; 

    // Return a string in YYYY/MM/DD HH:MM format 
    return newDate.getFullYear() + '/' + 
      month + '/' + 
      day + ' ' + 
      newDate.getHours() + ':' + 
      newDate.getMinutes(); 
} 

convertDate('2/27 6:57 PM'); // Returns: "2010/02/27 18:57" 
convertDate('3/27 6:57 PM'); // Returns: "2009/03/27 18:57" 
+0

+1 grande simplification –

+0

Maintenant, il est moins simple, mais plus puissant et moins erreur-sujette: D GW –

+0

@Adam: hehe ... au moins j'ai saupoudré quelques commentaires là-bas :) –

0

Renvoie l'année en cours:

var d = new Date(); 
var year = d.getFullYear(); 

à la figure si sa cette année ou non vous pouvez simplement comparer le jour et le mois avec le jour et le mois, et le cas échéant, il faut soustraire 1 de l'année.

Pour obtenir le jour et le mois de l'objet Date:

d.getMonth(); // warning this is 0-indexed (0-11) 
d.getDate(); // this is 1-indexed (1-31) 
1

le code pour ajouter CE années est simple

var d = Date(); 
var withYear = d.getFullYear() + yourDate; 

cependant, la logique derrière considèrant si elle devrait être cette année ou l'année dernière pourrait être plus difficile à faire

Je penserais de cette façon: obtenir la date du jour. Si la date est plus que celui d'aujourd'hui, il est l'année dernière, il faut donc ajouter d.getFullYear()-1, sinon ajouter d.getFullYear()

Questions connexes