Как представить .NET DateTime 24-часовой формат в 01-24 вместо 00-23? - PullRequest
5 голосов
/ 03 сентября 2010

У меня странное деловое требование выводить даты с 01:00 до 24:00 вместо обычных 00:00 до 23:00. Это действительно сумасшедшее требование, но, к сожалению, я не думаю, что смогу этого избежать.

Это будет вариант конфигурации в нашем программном обеспечении, поэтому мне все равно потребуется поддержка нормального 00-23, поэтому я надеюсь, что смогу сделать это как-нибудь с помощью форматных строк. Но я также рассматриваю возможность использования регулярных выражений для последующей обработки строки результата, если это облегчает задачу.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 03 сентября 2010

Расширение .NET путем создания собственного поставщика форматов: http://msdn.microsoft.com/en-us/library/0asazeez(VS.71).aspx

2 голосов
/ 03 сентября 2010

Звучит как хороший кандидат на класс-оболочку, который используется для форматирования DateTime в соответствии с бизнес-правилами:

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);
    }
}

В качестве альтернативы, а может быть, даже более правильно, вы можете создать тип, который представляет бизнес-идею DateTime. В объектно-ориентированном проектировании такая замена примитивных типов пользовательскими типами происходит часто, поскольку моделируемый домен имеет особые ограничения, подобные описанному вами.

...