none
How measure spans between old and new Date RRS feed

  • Question

  • Hello,

    Svp assiste moi:

    Utiliser measure spans: ancien et nouveau Date

    Merci

    Arnold

    cls
    # $date = '12.07.2012'
    # $templ = 'dd.MM.yyyy'
    # [DateTime]::Parse($date, $templ, $null)
    
    $oldD = @(
    "09.08.1930",
    "14.10.1929",
    "14.10.1924",
    "23.10.1921",
    "27.11.1925",
    "24.10.1933",
    "24.10.1933",
    "03.06.1931",
    "15.09.1932",
    "21.01.1896",
    "18.02.1926",
    "21.02.1931",
    "09.04.1925",
    "16.03.1905",
    "16.07.1926",
    "05.03.1931",
    "26.07.1929",
    "22.05.1919",
    "27.05.1931",
    "22.11.1926",
    "19.11.1912",
    "01.07.1919",
    "08.02.1914",
    "05.12.1934",
    "15.12.1925")
    
    # measure date for each
    forEach($date in $first = get-date -date $oldD -f dd.MM.yyyy
    $last = get-date -date "31.12.1934" -f dd.MM.yyyy # last day of month
    $spann = New-TimeSpan -Start $first -End $last)
    
    “The Date-Span is {0:g}” -f $spann


    • Modifié arnold_ jeudi 23 mai 2019 13:53
    jeudi 23 mai 2019 12:56

Réponses

  • Bonjour

    Voici la solution pour avoir une réponse utilisable.

    Avec Excel sa fonctionne très bien.

    700 est un multiple de 28 qui permet d'exploiter les dates depuis l'an 1200 decal=255675
    
    Sa donne:
    =DATEDIF(h3+decal;h5+decal;"y")&" Ann., "
     &DATEDIF(h3+decal;h5+decal;"ym")&" Mo., "
     &DATEDIF(h3+decal;h5+decal;"md")&" Jrs."
    
    Obs.
    Le découpage en années mois et jours d'une durée calendaire n'a aucune valeur mathématique, 
    les durées des mois et années n'étant pas des constantes.
    
    En VB (Excel 2007; pour les autre version: non tester):
    
    Function NewDateDif(dat1 As Date, dat2 As Date) As String
    Dim ans%, mois%, jours%
    ans = Year(dat2) - Year(dat1) + (DateSerial(2000, Month(dat2), Day(dat2)) < DateSerial(2000, Month(dat1), Day(dat1)))
    mois = Month(dat2) - Month(dat1) + (Day(dat2) < Day(dat1))
    If mois < 0 Then mois = mois + 12
    jours = dat2 - DateSerial(Year(dat2), Month(dat2), Day(dat1))
    If jours < 0 Then jours = dat2 - DateSerial(Year(dat2), Month(dat2) - 1, Day(dat1))
    NewDateDif = IIf(ans, ans & " an" & IIf(ans > 1, "s", ""), "") & " " & _
        IIf(mois, mois & " mois", "") & " " & IIf(jours, jours & " jour" & IIf(jours > 1, "s", ""), "")
    NewDateDif = Application.Trim(NewDateDif) 'SUPPRESPACE
    End Function
    
    
    

    Merci a vous!

    Arnold

    • Marqué comme réponse arnold_ vendredi 31 mai 2019 14:56
    vendredi 31 mai 2019 14:55

Toutes les réponses

  • Bonjour,

    ce forum utilise le français. Il est fortement conseillé d'utiliser ce langage pour obtenir les meilleures réponses possible.

    This forum is adapted for the french language. Please English equivalent forums if french is not confortable for you.


    Thierry DEMAN-BARCELO. Offce Apps&Services MVP. MCSE:Messaging 2016,MCSE:Server Infrastructure 2012(86 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate http://base.faqexchange.info

    jeudi 23 mai 2019 13:48
  • Bonjour

    C'est mieux pour vous?

    @r

    jeudi 23 mai 2019 13:54
  • Je pense qu'il y aura plus de réponses... même l'objectif demandé n'est pas très clair.

    S'agit-il de comparer la date du "31.12.1934" par rapports aux différentes dates de la liste ?

     


    Thierry DEMAN-BARCELO. Offce Apps&Services MVP. MCSE:Messaging 2016,MCSE:Server Infrastructure 2012(86 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate http://base.faqexchange.info

    jeudi 23 mai 2019 16:24
  • Bonjour,

    Merci pour votre répons.

    Je voudrais obtenir la durée entre 2 date avec un "for each"?

    Merci

    @r

    jeudi 23 mai 2019 16:31
  • exemple de fin de script:

    # measure date for each
    forEach($date in $OldD){
      $first = get-date -date $date -f dd.MM.yyyy
      $spann = New-TimeSpan -Start $first -End $last
      echo $spann.days
    #  "The Date-Span is {0:g}" -f $Spann
    }

    => Différence en jour entre la date de référence et chacune des dates


    Thierry DEMAN-BARCELO. Offce Apps&Services MVP. MCSE:Messaging 2016,MCSE:Server Infrastructure 2012(86 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate http://base.faqexchange.info

    jeudi 23 mai 2019 21:39
  • Bonsoir Monsieur,

    Merci pour votre réponse.

    Votre "Stuff" s'exécute très bien !

    Maintenant en rentre dans le "sys" d'un calendrier ….

    Je ne fermeras cette topic toute suite..

    Merci

    Arnold

    jeudi 23 mai 2019 21:58
  • Bonjour

    Voici la solution pour avoir une réponse utilisable.

    Avec Excel sa fonctionne très bien.

    700 est un multiple de 28 qui permet d'exploiter les dates depuis l'an 1200 decal=255675
    
    Sa donne:
    =DATEDIF(h3+decal;h5+decal;"y")&" Ann., "
     &DATEDIF(h3+decal;h5+decal;"ym")&" Mo., "
     &DATEDIF(h3+decal;h5+decal;"md")&" Jrs."
    
    Obs.
    Le découpage en années mois et jours d'une durée calendaire n'a aucune valeur mathématique, 
    les durées des mois et années n'étant pas des constantes.
    
    En VB (Excel 2007; pour les autre version: non tester):
    
    Function NewDateDif(dat1 As Date, dat2 As Date) As String
    Dim ans%, mois%, jours%
    ans = Year(dat2) - Year(dat1) + (DateSerial(2000, Month(dat2), Day(dat2)) < DateSerial(2000, Month(dat1), Day(dat1)))
    mois = Month(dat2) - Month(dat1) + (Day(dat2) < Day(dat1))
    If mois < 0 Then mois = mois + 12
    jours = dat2 - DateSerial(Year(dat2), Month(dat2), Day(dat1))
    If jours < 0 Then jours = dat2 - DateSerial(Year(dat2), Month(dat2) - 1, Day(dat1))
    NewDateDif = IIf(ans, ans & " an" & IIf(ans > 1, "s", ""), "") & " " & _
        IIf(mois, mois & " mois", "") & " " & IIf(jours, jours & " jour" & IIf(jours > 1, "s", ""), "")
    NewDateDif = Application.Trim(NewDateDif) 'SUPPRESPACE
    End Function
    
    
    

    Merci a vous!

    Arnold

    • Marqué comme réponse arnold_ vendredi 31 mai 2019 14:56
    vendredi 31 mai 2019 14:55