如何在01-24而不是00-23中表示.NET DateTime 24小时格式?

ran*_*own 5 .net format datetime tostring

我有一个奇怪的业务要求,输出日期为01:00到24:00,而不是通常的00:00到23:00.这真是一个疯狂的要求,但不幸的是我不认为我可以避免它.

这将是我们软件中的一个配置选项,所以我仍然需要支持普通的00-23,所以我希望我能用格式字符串以某种方式做到这一点.但我也在考虑使用正则表达式来处理结果字符串,如果这样可以更容易.

谢谢!

cod*_*zen 2

这听起来像是包装类的一个很好的候选者,它用于根据业务规则格式化 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,也许更正确的是,您可以创建一个代表 DateTime 业务理念的类型。在面向对象的设计中,这种用自定义类型替换原始类型的情况经常发生,因为要建模的域具有特殊的限制,就像您所描述的那样。