SORU
8 EYLÜL 2009, Salı


Yuvarlama DateTime nesneleri

Tarihler grafik uygulama için en yakın aralığı/kez tura istiyorum. Yuvarlama hassasiyeti her seviye için elde edilebilir, böylece aşağıdaki gibi uzatma yöntemi bir imza istiyorum:

static DateTime Round(this DateTime date, TimeSpan span);

Fikir on dakikalık bir zaman aralığı içinde geçecek olursam, en yakın on dakikalık aradan yuvarlak olmasıdır. Uygulama başımı alamıyorum biriniz ya da ona benzer bir şey daha önce yazılmış kullanmış olacak umuyorum.

Zemin, tavan veya yakın bir uygulama, her ikisi de olur bence.

Herhangi bir fikir?

Edit: @Sayesinde tvanfosson & @uygulanması bu gibi görünüyor ShuggyCoUk,:

public static class DateExtensions {
    public static DateTime Round(this DateTime date, TimeSpan span) {
        long ticks = (date.Ticks   (span.Ticks / 2)   1)/ span.Ticks;
        return new DateTime(ticks * span.Ticks);
    }
    public static DateTime Floor(this DateTime date, TimeSpan span) {
        long ticks = (date.Ticks / span.Ticks);
        return new DateTime(ticks * span.Ticks);
    }
    public static DateTime Ceil(this DateTime date, TimeSpan span) {
        long ticks = (date.Ticks   span.Ticks - 1) / span.Ticks;
        return new DateTime(ticks * span.Ticks);
    }
}

Ve denir ki: gibi

DateTime nearestHour = DateTime.Now.Round(new TimeSpan(1,0,0));
DateTime minuteCeiling = DateTime.Now.Ceil(new TimeSpan(0,1,0));
DateTime weekFloor = DateTime.Now.Floor(new TimeSpan(7,0,0,0));
...

Şerefe!

CEVAP
8 EYLÜL 2009, Salı


Kat

long ticks = date.Ticks / span.Ticks;

return new DateTime( ticks * span.Ticks );

Yuvarlak (orta nokta üzerinde

long ticks = (date.Ticks   (span.Ticks / 2)   1)/ span.Ticks;

return new DateTime( ticks * span.Ticks );

Tavan

long ticks = (date.Ticks   span.Ticks - 1)/ span.Ticks;

return new DateTime( ticks * span.Ticks );

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GoProTutorials

    GoProTutoria

    18 NİSAN 2011
  • Lin Steven

    Lin Steven

    17 EKİM 2006
  • Shon Gonzales

    Shon Gonzale

    5 EKİM 2014