Duration recréé en alias (tout simple)

Contenu du snippet

cette petite alias agis comme $duration , c'est a dire qu'elle convertis une duré a la base en seconde: en années, semaines, jours, heures, minutes et secondes

example:

//echo -a $wduration(6001000000)

donera:

190 Ans 15 Semaines 1 Jour 26Min 40Secs

il n'y a rien de bien compliqué dans ce code, mais je le poste comme example pour ceux ki voudrais s'en inspirer pour faire d'autres alias dans le meme genre mais plus pousées

pour la seconde source: utilisez $wdur(xxxx)
ou x est bien évidement un nombre
le resultat est le meme qu"avec $wduration mais il est plus rapide du fait qu"il n'y a plus de boucles :) c'est plus direct

merci a pada pour ses conseils

Source / Exemple :


wduration {
  if ($isid) {
    if ($1 isnum) {
      var %n = $1 , %heures 0 , %min 0 , %days 0 , %year , %week 0
      while (%n >= 31536000) {
        inc %year
        dec %n 31536000
      }
      while (%n >= 604800) {
        inc %week
        dec %n 604800
      }
      while (%n >= 86400) {
        inc %days
        dec %n 86400
      }
      while (%n >= 3600) {
        inc %heures
        dec %n 3600
      }
      while (%n >= 60) {
        inc %min
        dec %n 60
      }
      return $iif(%year > 0,$ifmatch Ans) $iif(%week > 0 ,$ifmatch Semaines) $iif(%days > 0,$ifmatch Jour $+ $iif(%days > 1,s)) $iif(%heures > 0,$ifmatch $+ Heure $iif(%heures > 1,s)) $iif(%min > 0,$ifmatch $+ Min) $iif(%n > 0,$ifmatch $+ Secs)
    }
    else { return N/a }
  }
}

;------------------------------------------
;la je met la nouvelle source (j'ai laissé l'anciene pour que vous ayez de quoi comparer sur l'anciene)
;------------------------------------------

wdur {
  if ($isid) {
    if ($1 isnum) {
      var %n = $1  , %heures 0 , %min 0 , %days 0 , %year , %week 0 , %millen 0 , %siecl 0
      var %millen = $int($calc(%n /31556952000))
      dec %n $calc(%millen *31556952000)
      var %siecl = $int($calc(%n /3155695200))
      dec %n $calc(%siecl *3155695200)
      var %year = $int($calc(%n /31556952))
      dec %n $calc(%year *31556952)
      var %week = $int($calc(%n / 604800))
      dec %n $calc(%week *604800)
      var %day = $int($calc(%n / 86400))
      dec %n $calc(%day * 86400)
      var %heures = $int($calc(%n /3600))
      dec %n $calc(%heures *3600)
      var %min = $int($calc(%n / 60))
      dec %n $calc(%min * 60)
      if ($2) {
        if ($2 == 1) { return %millen %siecl %year %week %days %heures %min %n }
        elseif ($2 == 2) { return %millen millénaire %siecl siecles %year anées %week semaines %days jours %heures heures %min minutes  %n secondes }
      }
      return $iif(%millen > 0,$ifmatch Millenaire $+ $iif(%millen > 1,s)) $iif(%siecl > 0,$ifmatch Siecle $+ $iif(%siecl > 1,s)) $iif(%year > 0,$ifmatch Ans) $iif(%week > 0 ,$ifmatch Semaines) $iif(%days > 0,$ifmatch Jour $+ $iif(%days > 1,s)) $iif(%heures > 0,$ifmatch $+ Heure $+ $iif(%heures > 1,s)) $iif(%min > 0,$ifmatch $+ Min) $iif(%n > 0,$ifmatch $+ Sec $+ $iif(%n > 1,s))
      else { return N/a }
    }
  }
}

Conclusion :


et ouis je sait que cette alias n'est pas aussis rapide qu"un vrais $duration
mais je l'ai juste faite pour relever le defis (je vais tenter de refaire une bonne partie des identifieurs mirc pour m'amuser un peu)

voila voila au plésir :)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.