Idiot Time Format

Lucidiot Informatique 2016-05-23
Ne plus jamais remettre les pendules à l'heure correctement.


« Il est maintenant 7h60 » — Lucidiot, 25 avril 2016, 8h00

Status of this Memo

Cette pseudo-RFC décrit un format expérimental de l'heure rendant obsolètes les fuseaux horaires et le Daylight Saving Time. L'objectif est une simplification théorique radicale du concept d'heure et une complexification psychologique radicale du concept d'heure. La distribution de ce mémo est illimitée sous la licence appliquée sur ce site.

Table des matières

Status of this Memo Table des matières Vue d'ensemble Formatage de l'heure Expression relative Rétrocompatibilité Implémentation PowerShell

Vue d'ensemble

Le 27 avril 1900, soit il y a exactement 116 ans, Lord Kelvin déclarait :

« Les physiciens comprennent la quasi-totalité du monde qui nous entoure. (...) le travail du physicien ne consistera qu'à faire des mesures et des prédictions de plus en plus précises. »

Les prédictions de Lord Kelvin concernant ses deux fameux nuages assombrissant le ciel bleu de la physique intégralement comprise se sont avérées plutôt justes, et celle de l'augmentation de la précision aussi. Cette augmentation a eu un fort impact en termes de mesures temporelles : la déclaration de fuseaux horaires ne correspondant plus à ceux physiques mais à un découpage géopolitique, l'arrivée d'années bissextiles et le changement d'heure en printemps et en automne destinés à économiser de l'énergie ont au fil du temps complexifié un calendrier grégorien s'avérant déjà être un casse-tête pour quiconque souhaitant exploiter toute datation ne se représentant plus communément par un seul nombre entier, notamment dans le domaine de l'informatique.

Ce standard a pour but d'établir un format de l'heure assurant une simplification de l'exploitation des données horaires par des systèmes automatisés de traitement des données au détriment des êtres humains.

Formatage de l'heure

L'heure, variant de 0 à 23, s'incrémente une fois par jour, une fois son exploitation faite pendant 24 heures et 59 minutes, lorsque son numéro est dépassé dans le standard horaire classique. Le nombre de minutes est décompté depuis le début de l'application de l'heure en cours, et varie donc de 0 à 1499 minutes. Le nombre de secondes reste au format standard.

L'ajout d'un zéro pour les heures et les secondes de 0 à 9 reste applicable, mais celui d'un zéro pour les minutes de 0 à 9 ne l'est plus. L'affichage de multiples zéros est possible mais l'utilisation de traits d'union - signes moins est recommandée.

Expression relative

Il est théoriquement possible d'exprimer tout instant d'une journée en utilisant toute heure en tant que base. Cette méthode ne doit toutefois être appliquée exclusivement pour des données de datation récurrentes comme des emplois du temps, et l'heure de base 0 est recommandée.

Rétrocompatibilité

Afin d'assurer une rétrocompatibilité avec les normes de formatage horaire standard, le changement d'heure, les fuseaux horaires et les années bissextiles étant ignorées, les conversions horaires doivent s'effectuer à partir d'une date de référence fixe. Le choix de la date et de l'heure de référence est laissé à la discrétion du réalisateur de la conversion. Afin d'éviter le problème d'expression relative exprimé précédemment, la date de référence devant être respectée est celle du 25 avril 2016 où l'heure de base y a été définie à 7. Cette date représente la première utilisation de l'Idiot Time Format.

Implémentation PowerShell

Pour faciliter l'intégration de l'Idiot Time Format dans les systèmes actuels, une implémentation en PowerShell d'un convertisseur depuis le format horaire classique vers le nouveau format est mise à disposition dans les mêmes conditions que le présent standard. Un lien de téléchargement est disponible ici.

Cette implémentation définit un module Get-IdiotTime compatible avec PowerShell 2.0 ou supérieur. Consultez Get-Help about_Modules ou la base de connaissances MSDN pour plus d'informations sur l'installation et l'utilisation de modules.

<#
 .Synopsis
    Obtient l'heure convertie en Idiot Time Format.

 .Description
    L'applet de commande Get-IdiotTime obtient un String qui représente la date
    du jour ou une date que vous spécifiez ainsi que son composant d'heure
    converti au format d'heure idiote (Idiot Time Format).

 .Parameter SourceDate
    Une date spécifiée pour la conversion. Si ce paramètre est omis, la date
    en cours est utilisée.

 .Example
    # Afficher la date en cours avec l'heure au format Idiot Time Format.
    Get-IdiotTime

 .Example
    # Afficher l'heure convertie au Idiot Time Format de 2010-01-01T16:00:00. 
    Get-Date -Day 1 -Month 1 -Hour 16 -Minute 0 -Year 2010 | Get-IdiotTime

    .Inputs
    DateTime contenant la date et l'heure aux formats classiques.

    .Outputs
    String contenant la conversion de la date et l'heure en Idiot Time Format.

    .Link
    http://brainshit.xyz/blog/421511
#>
function Get-IdiotTime {
        param (
        [Parameter(
                Position=0, 
                ValueFromPipeline=$true,
                ValueFromPipelineByPropertyName=$true)
        ]
        [Alias('SourceDate')]
        [DateTime]$Date = $(Get-Date)
        )
        process {
                Write-Debug -Message "Définition de la date de référence"
                $refDate = Get-Date -Day 18 -Month 4 -Year 2016 -Hour 0 -Minute 0 -Second 0
                Write-Verbose -Message ("Date de référence : " + $refDate)
                Write-Debug -Message "Calcul de l'heure"
                $hour = [math]::Truncate((New-TimeSpan -Start $refDate -End $Date).TotalDays) % 24
                if($hour -lt 0) { $hour += 24 }
                Write-Debug -Message "Calcul des minutes"
                $begin = Get-Date -Date $Date -Hour $hour -Minute 0 -Second 0
                if($Date.Hour -lt $hour) {
                        $begin.AddDays(-1)
                }
                Write-Verbose -Message ("Date de début des minutes :" + $begin)
                $min = [math]::Truncate((New-TimeSpan -Start $begin -End $Date).TotalMinutes)
                Write-Debug -Message "Retour de la date convertie"
                return (Get-Date -Date $Date -Format yyyy-MM-dd)+"T"+$hour+":"+$min+":"+(Get-Date -Date $Date -Format ss)
        }
}
Export-ModuleMember -function Get-IdiotTime

Commentaires

Il n'y a pour l'instant aucun commentaire. Soyez le premier !