Date functions #1

BirthRange(), DateFormat(), DayDiff(), RangeDiff()

by toubia95

CSS

/* HELP NOTICES
 * http://www.webdevelopersnotes.com/tips/html/10_ways_to_format_time_and_date_using_javascript.php3
 * http://www.elated.com/articles/working-with-dates/
*/

/* faire une loop qui additionne le nombre de jours communs, afin de sélectionner comme référence la période qui croise le plus d'autres périodes, mais qui a aussi le plus de jours en commun */

/* TODO :
    */

JavaScript

/*****************************************************************
 * FONCTIONS 
 *****************************************************************/

// fonction BirthRange() calcul auto de la période de naissance
function BirthRange(day,month,year,age) { // jour, mois, année, age sur l'acte
    var d1 = new Date(year, month-1, day);
    var d2 = new Date(year-1-age, month-1, day+1);
    var d3 = new Date(year+1-age, month-1, day-1);
    return [d1,d2,d3,age]; // [0] date acte [1] naissance mini [2] naissance maxi [3] age sur acte
}

// formatage d'un objet date en JJ/MM/AAAA pour l'affichage
function DateFormat(date) {
    return date.getDate()+"/"+(date.getMonth()+1)+"/"+(date.getYear()+1900);
}

// Nombre de jours entre 2 dates
function DayDiff(first, second) {
    return Math.round(Math.abs((second-first)/(1000*60*60*24))+1);
}

// Nombre de jours communs à 2 périodes de naissance (range1 et range2 sont des BirthRange())
function RangeDiff(range1, range2) {
    if ((range1[2]<range2[1]) || (range1[1]>range2[2])) { 
        var days = 0; 
    } else {
        var max = new Date(Math.max(range1[1], range2[1]));
        var min = new Date(Math.min(range1[2], range2[2]));
        var days = DayDiff(min,max); 
    }
    return days;
}

/*****************************************************************/

var jour1 = 30, 
    mois1 = 6, 
    annee1 = 2013,
    age1 = 41;

// création des l'objets date
var date1 = new Date(annee1, mois1-1, jour1);
var date2 = new Date(annee1-1-age1, mois1-1, jour1+1);
var date3 = new Date(annee1+1-age1, mois1-1, jour1-1);

// affichage du contenu formaté de date1
var b = $('body');
b.append('<p><strong>Date sur acte = </strong>'+date1.getDate()+"/"+(date1.getMonth()+1)+"/"+(date1.getYear()+1900)+'</p>');

// affichage de l'age1
b.append('<p><strong>Age sur acte = </strong>'+age1+'</p>');

// Date2
b.append('<p><strong>Date2 = </strong>'+date2.getDate()+"/"+(date2.getMonth()+1)+"/"+(date2.getYear()+1900)+'</p>');

//...