7

Jun

Calcolare secondi, minuti e ore di una giornata in un comodo array

ciao a tutti

 

capita di avere la necessità di fare dei calcoli o delle logiche sulle date/ore in base al trascorrere di secondi, minuti o ore stesse

esistono tanti metodi, ma può essere utile avere una funzione per tornarci l’elenco di orari (con granularità variabile tra secondi, minuti e ore) presenti tra due momenti temporali

in pratica, una finestra temporale a granularità variabile

come?

ecco subito un semplice esempio Sorriso

 

static void Main(string[] args)
{
    var seconds = ElapsedSeconds(new DateTime(2012, 1, 1), new DateTime(2012, 1, 2)).ToArray();
    var minutes = ElapsedMinutes(new DateTime(2012, 1, 1), new DateTime(2012, 1, 2)).ToArray();
    var hours = ElapsedHours(new DateTime(2012, 1, 1), new DateTime(2012, 1, 2)).ToArray();
}

public static IEnumerable ElapsedSeconds(DateTime from, DateTime to)
{
    var now = from;
    while (now < to)
    {
        yield return now;
        now = now.AddSeconds(1);
    }
}

public static IEnumerable ElapsedMinutes(DateTime from, DateTime to)
{
    var now = from;
    while (now < to)
    {
        yield return now;
        now = now.AddMinutes(1);
    }
}

public static IEnumerable ElapsedHours(DateTime from, DateTime to)
{
    var now = from;
    while (now < to)
    {
        yield return now;
        now = now.AddHours(1);
    }
}

 

by Antonio Esposito on 6/7/2012