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

  • alex maybury

    alex maybury

    20 Aralık 2007
  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010
  • READ DESCRIPTION NOW!!!!!!!

    READ DESCRIP

    18 ŞUBAT 2009