2010-09-02 20 views
5

00:00 - 23:00 saatleri arasında çıkış tarihlerini 01:00 - 24:00 saatleri arasında tutabilmek için garip bir işletme şartım var. Bu gerçekten çılgın bir şart, ama maalesef bunu önleyebileceğimi sanmıyorum..NET DateTime 24 saat biçimini 00-23 yerine 01-24'te nasıl temsil edilir?

Bu, yazılımımızda bir yapılandırma seçeneği olacaktır, bu yüzden normal 00-23'ü de desteklemem gerekiyor, bu yüzden bunu bir şekilde biçim dizeleriyle yapabileceğimi umuyorum. Ama aynı zamanda daha kolay hale getirirse sonuç dizesini işlemek için bir regex kullanmayı düşünüyorum.

Teşekkürler!

+1

Başka bir deyişle, 00: XX yerine 24: XX göstermeniz gerekiyor ve başka hiçbir şey değişmiyor, değil mi? – zneak

+0

24: XX göstermesi gerekiyor, ancak büküm de önceki tarihten itibaren gösterilmesi gerekiyor. Örneğin. 9/7/2010 00:00, 09.06.2010 24:00 olarak gösterilmelidir. – randbrown

cevap

2

Bu iş kurallarına göre DateTime biçimlendirmek için kullanılan bir sarmalayıcı sınıf için iyi bir aday gibi sesler: Alternatif

public class BusinessDateTimeFormatter 
{ 
    public BusinessDateTimeFormatter(DateTime dateTime) 
    { 
     _dateTime = dateTime; 
    } 

    public override string ToString() 
    { 
     return String.Format("{0} {1}:{2}", _dateTime.Date, _dateTime.Hour + 1, _dateTime.Minute); 
    } 
} 

, ve belki daha da doğru bir şekilde, bir DateTime fikrini temsil eden bir tür yaratabilirsiniz. Nesne yönelimli tasarımda, ilkel türlerin özel türlerle değiştirilmesi sık sık gerçekleşir, çünkü modellenecek etki alanı, tanımladığınız gibi özel kısıtlamalara sahiptir.

+0

Bir tarih için bir müşteri biçimlendirici, benim için gitme yolu gibi geliyor. Bunu kapsüllemekte ve isminden neden silindiğini açık bir şekilde – JonWillis

+0

bu önerinin satırları boyunca bir şeyler yapmamı bitirdim - biçimlendirmeyi işlemek için basit bir iş sınıfı. Bu yaklaşımı seçtim çünkü şu anda sadece bir uygulamamın tek bir alanında gerekli olduğu için şimdilik bu en basit çözümdü. Uygulamanın diğer özellik alanlarında gerekli olursa, daha sağlam bir özel biçimlendirici veya bunun gibi bir şey uygulamayı düşünebilirim. – randbrown

3

kendi biçimi sağlayıcı oluşturarak .NET uzatın: http://msdn.microsoft.com/en-us/library/0asazeez(VS.71).aspx

+0

Bunun iyi bir fikir olduğunu sanmıyorum. IFormatProvider'ın sorumluluğu, iş kurallarına değil, kültüre göre biçimlendirmektir. Çalışırken, bu arayüzün sorumluluğuna ve buna karşılık gelen aşırı yüke çarpıyor. Bu bir iş meselesi olduğundan, mantık modele girmelidir. – codekaizen

+1

@ code - Katılmıyorum. Temelde özel bir kültür yaratıyor, iş mantığını tanımlamıyor (standart 'DateTime 'davranışını kullanıyor, sadece kullanıcıya farklı bir değer gösteriyor). Bu tam olarak IFormatProvider'ın ne için olduğunu. –

+0

@Jon B - Özel iş mantığı nasıl bir kültürdür? Özellikle bunun bir iş gerekliliği olduğunu belirtiyor. – codekaizen

İlgili konular